Программа не запускается из ключа реестра

Программа не запускается из ключа реестра

У меня есть программа, которую я устанавливаю с помощью скрипта NSIS. Последний шаг в установщике — записать в реестр ключ Run и запустить программу при запуске. Я подтвердил, что в разделе

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run 

существует ключ

MyCompany Program - C:\MyCompany\Program\launch.vbs

Я пробовал ключ с кавычками и без, но эффекта не было. Я подтвердил, что реестр считывается из CurrentVersion\Run, добавив

Notepad - C:\windows\notepad.exe

и Notepad теперь запускается при запуске. Скрипт launch.vbs — это однострочный скрипт для запуска скрипта без окна cmd.exe:

'HideBat.vbs from https://superuser.com/questions/140047/how-to-run-a-batch-file-without-launching-a-command-window
CreateObject("Wscript.Shell").Run "cmd /c " & chr(34) & "C:\MyCompany\Program\run.cmd " & chr(34), 0, True

Я подтвердил, что вызов launch.vbs из окна проводника или из cmd.exe работает так, как я и ожидал (запуск моей программы). msconfig подтверждает, что C:\MyCompany\Program\launch.vbs указан на вкладке автозагрузки. Вкладка безопасности в свойствах файла указывает, что все пользователи должны иметь права на чтение и выполнение. То же самое касается и фактического вызова run.cmd.

На данный момент я не понимаю, почему моя программа не запускается, и не могу придумать эффективный способ ее отладки.

Система — Windows 7 Professional 64-бит.

решение1

С помощью LPChip я запустил отладку MessageBox и убедился, что скрипт запускается, но выдает ошибку. Я обновил launch.vbs до

CreateObject("Wscript.Shell").Run "cmd /k " & chr(34) & "C:\MyCompany\Program\run.cmd " & chr(34), 1, True

(обратите внимание на /k, чтобы окно оставалось активным, и 1, чтобы показать). Отсюда стало очевидно, что java не установлен в classpath для скриптов, запускаемых через CurrentVersion\Run. Жесткое кодирование пути к java (который наши клиенты будут вынуждены использовать в любом случае) в run.cmd решило проблему.

Связанный контент