![]() |
Подружить реестр с внутренними ссылками 1С
Пытаюсь научить Windows 7 открывать т.н. внутренние ссылки 1С Предприятие (разновидность URI). Сама ссылка имеет такой вид: e1c://server/srv-cm2.test.ru/basa1c#e1cib/data/Справочник.ВнутренниеДокументы?ref=9bd4567542136c11e38813d6f7f28b
Чтобы винда узнавала ссылку, нужно внести изменения в реестре и связать приложение клиента 1С с именем ссылки. В ветке HKEY_CLASSES_ROOT создаю раздел e1c и подразделы shell/open/command - тут прописываю ключ для открытия этой ссылки клиентом 1С: "C:\Program Files (x86)\1cv8\common\1cestart.exe" - вроде открывает. Проблема в том, что эту запись надо распространить политиками по компьютерам домена. Естественно, ОСи х32 и х64 у нас в соотношении 50/50. Т.е. в ключе реестра путь до 1cestart.exe варьируется в зависимости от разрядности системы - надо сделать переменные. ОК, иду в переменные среды, там добавляю параметр PATH и в нем указываю два пути до возможного расположения клиента 1С: %Programfiles%\1cv8\common;%Programfiles(x86)%\1cv8\common. В реестре меняю прописанный в ключе путь на "%1cestart.exe%" (точно не знаю, надо ли ставить % - пробовал с ними и без них). В общем, при попытке зайти по ссылке выдается ошибка, что приложение не найдено. Делал это все в первый раз, раньше опыта не было, потому полагаю, что где-то чего-то забыл прописать. Подскажите, пожалуйста, если кто знает! |
Цитата:
Код:
@%1cestart.exe% Цитата:
Переменные там такие: %ProgramFiles% = C:\Program Files (x86) %ProgramFiles(x86)% = C:\Program Files (x86) %ProgramW6432% = C:\Program Files Можете свою переменную и не создавать, а писать переменную PF, примерно так: @%ProgramFiles%\1cv8\common\1cestart.exe %1 или @%ProgramW6432%\1cv8\common\1cestart.exe %1 Может чего не то насоветовал, не проверял еще :) |
Цитата:
В любом случае, не работает, если в ключе реестра указываю переменную, а не полный путь :-( Непонятно как-то, почему реестре не воспринимает переменные. |
Stavral, а с чего он вдруг должен «воспринимать»? «Воспринимают» или «не воспринимают» приложения. Специально для «не воспринимающих» был заведён тип параметра «REG_EXPAND_SZ». Если в Вашем случае сие допустимо — можете попробовать.
|
Iska, разве нельзя в значение ключа реестра вставить переменную?
|
Stavral, используйте параметр типа
Цитата:
|
Blast, у меня получилось в таком варианте:
Код:
Windows Registry Editor Version 5.00 По логике, чтобы получить требуемое, надо лишь заменить C:\\Program Files (x86)\\1cv8\\common\\1cestart.exe\ на %1cestart.exe% - но это почему-то не работает. При этом в переменных среды все указано, запуск 1cestart.exe через "Выполнить" тоже работает - т.е. система восприняла новую переменную. Почему же когда переменную помещаю в реестр - все перестает работать? |
Код:
Windows Registry Editor Version 5.00 |
Цитата:
2. Если есть — попробуйте обрамить кавычками путь — «"%1cestart.exe%"». |
Цитата:
|
Iska, Blast, так, я похоже всех запутал слегка. :)
Дано (уже имеется): - в переменных среды для Path добавлено следующее: C:\Program Files (x86)\1cv8\common;C:\Program Files\1cv8\common - в реестре добавлено следующее: Код:
[HKEY_CLASSES_ROOT\e1c] |
Цитата:
Вы ведь переменную назначили к папке, а исполняемый файл не указали в параметре реестра, как его системе как найти? Да и переменную обзовите как-то иначе чтоб не путаться. |
Цитата:
Код:
[HKEY_CLASSES_ROOT\e1c\shell\open\command] |
Blast, не пойму, при чем тут имя переменной. Я не новую переменную создавал, а модифицировал переменную PATH, чтобы операционная система искала исполняемый 1cestart.exe в нужной папке. И ведь это работает! Потому что если утилитой "Выполнить" попробовать зайти по ссылке 1cestart.exe /URL e1c://server/srv-s4cm1.onegroup.ru/sed83#e1cib/data/Задача.ЗадачаИсполнителя?ref=b2ef00505692136c11e3dcd9d889a7f6 - она откроется.
Может быть я изначально все не так сделал? Подскажите, пожалуйста, как мне создать переменную, указывающую на конкретный *.exe? Iska, так я уже пробовал, не работает :( |
Цитата:
Цитата:
|
Цитата:
|
Iska, решил попробовать с другой стороны. Зарегистрировал приложение 1cestart.exe тут HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\1cestart.exe.
Выглядит это так: Код:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\1cestart.exe] Пожалуйста, объясните, почему все перестает работать, если заменить C:\Program Files (x86) на %ProgramFiles(x86)%??? Хоть убейте не понимаю, в чем тут ошибка... |
В общем, проблему решили обходным способом. Создали групповую политику, в которой есть условие по разрядности операционной системы.
Соответственно, на х86 запись в реестр выглядит так: Код:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\1cestart.exe] Код:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\1cestart.exe] |
Время: 21:18. |
Время: 21:18.
© OSzone.net 2001-