El programa no se inicia desde la clave de ejecución del registro

El programa no se inicia desde la clave de ejecución del registro

Tengo un programa que instalo usando un script NSIS. El último paso en el instalador es escribir en la clave Ejecutar del registro y hacer que el programa se ejecute al inicio. He confirmado que bajo

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

existe la clave

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

Probé la clave con y sin comillas pero no hubo ningún impacto. He confirmado que el registro está leyendo desde CurrentVersion\Run agregando

Notepad - C:\windows\notepad.exe

y el Bloc de notas ahora se inicia al inicio. El script launch.vbs es una sola línea para iniciar un script sin la ventana 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

He confirmado que llamar a launch.vbs desde una ventana del explorador o desde cmd.exe funciona como esperaba (iniciar mi programa). msconfig confirma que C:\MyCompany\Program\launch.vbs aparece en la pestaña de inicio. La pestaña de seguridad de Propiedades del archivo indica que todos los usuarios deben tener privilegios de lectura y ejecución. Lo mismo ocurre con el run.cmd que realmente se llama.

En este punto, no sé por qué no se inicia mi programa y no puedo encontrar una manera eficiente de depurarlo.

El sistema es Windows 7 Professional de 64 bits.

Respuesta1

Con la ayuda de LPChip, comencé la depuración del cuadro de mensajes y confirmé que el script se estaba iniciando, pero se producía un error. Actualicé launch.vbs a

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

(tenga en cuenta /k para mantener activa la ventana y 1 para mostrar). A partir de ahí, era evidente que Java no está configurado en el classpath para scripts iniciados a través de CurrentVersion\Run. Codificar la ruta a Java (que nuestros clientes se verán obligados a usar de todos modos) en run.cmd resolvió el problema.

información relacionada