Я скопировал приложение на удалённую машину. Теперь хочу добавить для него ярлычки на рабочий стол и в пуск.
Как программно это сделать опять же удалённо? Пароль админа есть, диск С примонтирован.
Была идея создавать в реестре ключик в RunOnce, который бы вызывал батник/программку, которая бы создавала эти ярлыки и отправить удалённый комп в ребут. Но через командную строку создавать ярлыки нельзя (без спец. утиллит), а если копировать свою программу, то не факт что на машине будет стоять фреймворк.
Пробовал просто копировать со своего компа (благо указывают в одно место) — программа не запускается (там ярлык какой-то хитрый, указывает на папку, а не на исполняемый файл), плюс херится иконка.
Можно ли как-то ещё это сделать (остаются реестр и WMI)?
Здравствуйте, monnster, Вы писали:
M>Пробовал просто копировать со своего компа (благо указывают в одно место) — программа не запускается (там ярлык какой-то хитрый, указывает на папку, а не на исполняемый файл), плюс херится иконка.
Вот разобраться надо, что за "хитрый" ярлык. Мне кажется копирование ярлыка — простейшее решение.
Здравствуйте, monnster, Вы писали:
M>Я скопировал приложение на удалённую машину. Теперь хочу добавить для него ярлычки на рабочий стол и в пуск. M>Как программно это сделать опять же удалённо? Пароль админа есть, диск С примонтирован. M>Была идея создавать в реестре ключик в RunOnce, который бы вызывал батник/программку, которая бы создавала эти ярлыки и отправить удалённый комп в ребут. Но через командную строку создавать ярлыки нельзя (без спец. утиллит), а если копировать свою программу, то не факт что на машине будет стоять фреймворк. M>Пробовал просто копировать со своего компа (благо указывают в одно место) — программа не запускается (там ярлык какой-то хитрый, указывает на папку, а не на исполняемый файл), плюс херится иконка. M>Можно ли как-то ещё это сделать (остаются реестр и WMI)?
Ярлык — это файл определенного формата, не больше и не меньше.
Варианты:
1. Самый простой. Приложение копируется по одному и тому же пути. Тогда ярлыки заранее создаются и просто кладутся куда нужно.
2. Чуть посложнее. Также ярлыки копируются, но путь к программе в нем меняется кодом (в общем чтобы сделать не нужно знать спецификацию на lnk)
3. Правильный путь: создавать файл формата lnk кодом согласно спецификации.
Спецификация на lnk не документирована. Но можно почитать тут.
Доброго времени суток! Мир Вам! С уважением Clevelus.
Если мой ответ понравился — оцените, ни на что не влияет, но будет приятно.
Здравствуйте, Clevelus, Вы писали:
C>Варианты: C>1. Самый простой. Приложение копируется по одному и тому же пути. Тогда ярлыки заранее создаются и просто кладутся куда нужно. C>2. Чуть посложнее. Также ярлыки копируются, но путь к программе в нем меняется кодом (в общем чтобы сделать не нужно знать спецификацию на lnk) C>3. Правильный путь: создавать файл формата lnk кодом согласно спецификации.
C>Спецификация на lnk не документирована. Но можно почитать тут.
Есть ещё 4й вариант, кривой, но рабочий:
1) Создаём vbs-скрипт примерно следующего содержания:
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) Убиваем процесс (иначе так и будет висеть), трём временную папку.
Здравствуйте, madbinom, Вы писали:
M>Вот разобраться надо, что за "хитрый" ярлык. Мне кажется копирование ярлыка — простейшее решение.
Разобрался. Оказалось, что это т.н. "advertised shortcut", и указывает он в папку C:\WINDOWS\Installer\{E37F08AA-E4CF-11D3-91EA-000000000000}\program.exe
Что конкретно делает program.exe я не знаю, но как минимум должна модифицировать переменную path для запускаемого приложения.
Можно ли как-нить обойтись без неё?
Здравствуйте, monnster, Вы писали:
M>Здравствуйте, Clevelus, Вы писали:
C>>Варианты: C>>1. Самый простой. Приложение копируется по одному и тому же пути. Тогда ярлыки заранее создаются и просто кладутся куда нужно. C>>2. Чуть посложнее. Также ярлыки копируются, но путь к программе в нем меняется кодом (в общем чтобы сделать не нужно знать спецификацию на lnk) C>>3. Правильный путь: создавать файл формата lnk кодом согласно спецификации.
C>>Спецификация на lnk не документирована. Но можно почитать тут.
M>Есть ещё 4й вариант, кривой, но рабочий: M>1) Создаём vbs-скрипт примерно следующего содержания:
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.
Если мой ответ понравился — оцените, ни на что не влияет, но будет приятно.