Имя: Пароль:
1C
1С v8
Как наиболее универсально получить путь к 1cestart.exe?
,
0 TormozIT
 
гуру
07.02.12
02:54
Читал справку в конфигураторе
Читал тут http://infostart.ru/public/104469/
Читал партнерский форум

Нужно получить путь к стартеру платформы (1cestart.exe) на любой ОС.

Понял что вроде отсюда (на Windows 7) C:\Users\All Users\1C\1CEStart\1CEStart.cfg нужно читать (параметр InstalledLocation).

Как этот путь получить?

В коллекции Shell.Application.NameSpace не нашел ни C:\Users\All Users\ ни C:\Users\
1 Дядя Васька
 
07.02.12
03:00
HKEY_CLASSES_ROOT\Applications\1cestart.exe? :)
2 TormozIT
 
гуру
07.02.12
03:13
(1) Это имя ключа, а не значения системного реестра. Там нет пути к файлу.
3 Дядя Васька
 
07.02.12
03:17
[HKEY_CLASSES_ROOT\Applications\1cestart.exe\shell\open\command]
@="\"C:\\Program Files\\1cv82\\common\\1cestart.exe\" /RunShortcut \"%1\""
4 TormozIT
 
гуру
07.02.12
03:19
Вот рабочее решение (проверил на 2003 server, windows 7, windows 2008 server)
ShellApplication = Новый COMobject("Shell.Application");
ВсеЮзеры  = ShellApplication.NameSpace(35).Self.Path;
ИмяКонфигФайла = ВсеЮзеры + "\1C\1CEStart\1CEStart.cfg";
Текст = Новый ТекстовыйДокумент;
Текст.Прочитать(ИмяКонфигФайла);
Путь = "";
Для Счетчик = 1 По СтрЧислоСтрок(Текст.ПолучитьТекст()) Цикл
   СтрокаТекста = СокрЛ(Текст.ПолучитьСтроку(Счетчик));
   Если Найти(СтрокаТекста, "InstalledLocation") = 1 Тогда
       Путь = Сред(СтрокаТекста, Найти(СтрокаТекста, "=") + 1);
       Прервать;
   КонецЕсли;
КонецЦикла;
ИмяФайла = Путь + "\common\1cestart.exe";

Коллеги, если знаете способ короче или нашли в этом ошибку, то напишите сюда об этом
5 Дядя Васька
 
07.02.12
03:21
(4) Те же яйца, только в профиль...
6 Дядя Васька
 
07.02.12
03:31
+(5) (3) Все же правильней наверное, если кому приспичит не Program Files поставить, а куда-нить в C:\1c например...
7 TormozIT
 
гуру
07.02.12
03:37
(3) Это как я понимаю для команды ОС "Open with". Если она по какой то причине не будет работать (ее кто то испортит/удалит), то платформа продолжает полноценно работать.
А вот если испортить значение параметра в указанном мной конфигурационном файле, то некоторые ее функции сломаются.

На мой взгляд (3) проще и изящнее, а (4) надежнее, т.к. используется информация из документации по платформе.
8 TormozIT
 
гуру
07.02.12
03:40
(3) + Есть вероятность, что другое приложение также назовет свой исполняемый файл и зарегистрирует его в этом ключе, перезаписав значение.
9 Дядя Васька
 
07.02.12
03:44
(8) Ну-ну... Примерно такая же, как если мама с папой запишут своему дитю в свидетельство о рождении имя TormozIT, ну или "дядя Вася"... А вот установить в нестандартное место могут запросто.
10 TormozIT
 
гуру
07.02.12
10:22
(9) При чем здесь нестандартное место? Оба способа устойчивы к изменению каталога установки. Еще раз хочу отметить, что платформа использует не ключ реестра из (3), а файл из (1) при определении каталога установки, правда в документации не указано для каких именно операций.

"
Формат конфигурационного файла программы запуска
Файл расположен в каталоге %APPDATA%\1C\1CEStart.
...
InstalledLocation - содержит указание на каталог, в который выполнена установка 1С:Предприятие. По умолчанию это значение C:\Program Files\1Cv82.
"
11 TormozIT
 
гуру
07.02.12
10:28
(10) + Правда это другой (второй) конфигурационный файл, какой из (1) и (10) имеет больший приоритет пока не понял.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс