Создать ярлык на удалённой машине
От: monnster  
Дата: 11.07.08 11:32
Оценка:
Я скопировал приложение на удалённую машину. Теперь хочу добавить для него ярлычки на рабочий стол и в пуск.
Как программно это сделать опять же удалённо? Пароль админа есть, диск С примонтирован.
Была идея создавать в реестре ключик в RunOnce, который бы вызывал батник/программку, которая бы создавала эти ярлыки и отправить удалённый комп в ребут. Но через командную строку создавать ярлыки нельзя (без спец. утиллит), а если копировать свою программу, то не факт что на машине будет стоять фреймворк.
Пробовал просто копировать со своего компа (благо указывают в одно место) — программа не запускается (там ярлык какой-то хитрый, указывает на папку, а не на исполняемый файл), плюс херится иконка.
Можно ли как-то ещё это сделать (остаются реестр и WMI)?
Re: Создать ярлык на удалённой машине
От: madbinom  
Дата: 12.07.08 10:14
Оценка:
Здравствуйте, monnster, Вы писали:

M>Пробовал просто копировать со своего компа (благо указывают в одно место) — программа не запускается (там ярлык какой-то хитрый, указывает на папку, а не на исполняемый файл), плюс херится иконка.


Вот разобраться надо, что за "хитрый" ярлык. Мне кажется копирование ярлыка — простейшее решение.
Re: Создать ярлык на удалённой машине
От: Clevelus Россия http://clevelus.ru
Дата: 13.07.08 14:36
Оценка: 6 (1)
Здравствуйте, monnster, Вы писали:

M>Я скопировал приложение на удалённую машину. Теперь хочу добавить для него ярлычки на рабочий стол и в пуск.

M>Как программно это сделать опять же удалённо? Пароль админа есть, диск С примонтирован.
M>Была идея создавать в реестре ключик в RunOnce, который бы вызывал батник/программку, которая бы создавала эти ярлыки и отправить удалённый комп в ребут. Но через командную строку создавать ярлыки нельзя (без спец. утиллит), а если копировать свою программу, то не факт что на машине будет стоять фреймворк.
M>Пробовал просто копировать со своего компа (благо указывают в одно место) — программа не запускается (там ярлык какой-то хитрый, указывает на папку, а не на исполняемый файл), плюс херится иконка.
M>Можно ли как-то ещё это сделать (остаются реестр и WMI)?

Ярлык — это файл определенного формата, не больше и не меньше.
Варианты:
1. Самый простой. Приложение копируется по одному и тому же пути. Тогда ярлыки заранее создаются и просто кладутся куда нужно.
2. Чуть посложнее. Также ярлыки копируются, но путь к программе в нем меняется кодом (в общем чтобы сделать не нужно знать спецификацию на lnk)
3. Правильный путь: создавать файл формата lnk кодом согласно спецификации.

Спецификация на lnk не документирована. Но можно почитать тут.
Доброго времени суток! Мир Вам! С уважением Clevelus.
Если мой ответ понравился — оцените, ни на что не влияет, но будет приятно.
Re[2]: Создать ярлык на удалённой машине
От: monnster  
Дата: 14.07.08 11:27
Оценка:
Здравствуйте, Clevelus, Вы писали:

C>Варианты:

C>1. Самый простой. Приложение копируется по одному и тому же пути. Тогда ярлыки заранее создаются и просто кладутся куда нужно.
C>2. Чуть посложнее. Также ярлыки копируются, но путь к программе в нем меняется кодом (в общем чтобы сделать не нужно знать спецификацию на lnk)
C>3. Правильный путь: создавать файл формата lnk кодом согласно спецификации.

C>Спецификация на lnk не документирована. Но можно почитать тут.


Есть ещё 4й вариант, кривой, но рабочий:
1) Создаём vbs-скрипт примерно следующего содержания:

Set oWS = WScript.CreateObject("WScript.Shell") 
sLinkFile = "C:\Documents and Settings\All Users\Desktop\Super-puper-proga.lnk" 
Set oLink = oWS.CreateShortcut(sLinkFile) 
oLink.TargetPath = "c:\Program Files\Super-puper\proga.exe" 
oLink.IconLocation = "c:\Program Files\Super-puper\icon.ico" 
oLink.Save


2) Копируем его на удалённую машину, к примеру в c:\tmp\lnk.vbs
3) Генерим батник для вызова этого скрипта (иконок может быть несколько, сразу все и создадим):

call c:\tmp\lnk.vbs
rem и остальные так же

exit


4) Сохраняем его в ту же папку под именем create_shortcuts.bat
5) Подключаемся к компу через WMI и создаем на нём процесс со следующей командной строкой: "cmd.exe /с create_shortcuts.bat"
6) Ждем некоторе время, пока скрипт отработает (не нашёл способа, как дождаться завершения удалённого процесса)
7) Убиваем процесс (иначе так и будет висеть), трём временную папку.
Re[2]: Создать ярлык на удалённой машине
От: monnster  
Дата: 14.07.08 14:03
Оценка:
Здравствуйте, madbinom, Вы писали:

M>Вот разобраться надо, что за "хитрый" ярлык. Мне кажется копирование ярлыка — простейшее решение.


Разобрался. Оказалось, что это т.н. "advertised shortcut", и указывает он в папку C:\WINDOWS\Installer\{E37F08AA-E4CF-11D3-91EA-000000000000}\program.exe

Что конкретно делает program.exe я не знаю, но как минимум должна модифицировать переменную path для запускаемого приложения.
Можно ли как-нить обойтись без неё?
Re[3]: Создать ярлык на удалённой машине
От: Clevelus Россия http://clevelus.ru
Дата: 14.07.08 14:54
Оценка:
Здравствуйте, monnster, Вы писали:

M>Здравствуйте, Clevelus, Вы писали:


C>>Варианты:

C>>1. Самый простой. Приложение копируется по одному и тому же пути. Тогда ярлыки заранее создаются и просто кладутся куда нужно.
C>>2. Чуть посложнее. Также ярлыки копируются, но путь к программе в нем меняется кодом (в общем чтобы сделать не нужно знать спецификацию на lnk)
C>>3. Правильный путь: создавать файл формата lnk кодом согласно спецификации.

C>>Спецификация на lnk не документирована. Но можно почитать тут.


M>Есть ещё 4й вариант, кривой, но рабочий:

M>1) Создаём vbs-скрипт примерно следующего содержания:

M>
M>Set oWS = WScript.CreateObject("WScript.Shell") 
M>sLinkFile = "C:\Documents and Settings\All Users\Desktop\Super-puper-proga.lnk" 
M>Set oLink = oWS.CreateShortcut(sLinkFile) 
M>oLink.TargetPath = "c:\Program Files\Super-puper\proga.exe" 
M>oLink.IconLocation = "c:\Program Files\Super-puper\icon.ico" 
M>oLink.Save
M>


M>2) Копируем его на удалённую машину, к примеру в c:\tmp\lnk.vbs

M>3) Генерим батник для вызова этого скрипта (иконок может быть несколько, сразу все и создадим):

M>
M>call c:\tmp\lnk.vbs
M>rem и остальные так же

M>exit
M>


M>4) Сохраняем его в ту же папку под именем create_shortcuts.bat

M>5) Подключаемся к компу через WMI и создаем на нём процесс со следующей командной строкой: "cmd.exe /с create_shortcuts.bat"
M>6) Ждем некоторе время, пока скрипт отработает (не нашёл способа, как дождаться завершения удалённого процесса)
M>7) Убиваем процесс (иначе так и будет висеть), трём временную папку.

Ну тогда 5 способ — самый правильный. Использовать Windows Installer (у него есть CreateShortcuts Action). И запускать инсталлер, который установит приложение.

ЗЫ: у 4 метода есть маленький недостаток. WScript может быть запрещен системной политикой, как и файлы vbs. Но это крайне редкий случай (хотя ... )
Доброго времени суток! Мир Вам! С уважением Clevelus.
Если мой ответ понравился — оцените, ни на что не влияет, но будет приятно.
Re[4]: Создать ярлык на удалённой машине
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 14.07.08 15:41
Оценка:
Здравствуйте, Clevelus, Вы писали:

Просьба сокращать объемы тестирования.
... << RSDN@Home 1.2.0 alpha 4 rev. 1095 on Windows Vista 6.0.6001.65536>>
AVK Blog
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.