O programa não inicia a partir da chave de execução do registro

O programa não inicia a partir da chave de execução do registro

Eu tenho um programa que instalo usando um script NSIS. A etapa final do instalador é gravar na chave Run do registro e executar o programa na inicialização. Eu confirmei isso em

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

existe a chave

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

Tentei a chave com e sem aspas, mas não houve impacto. Confirmei que o registro está lendo CurrentVersion\Run adicionando

Notepad - C:\windows\notepad.exe

e o Bloco de notas agora é iniciado na inicialização. O script launch.vbs é uma linha para iniciar um script sem a janela 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

Confirmei que chamar launch.vbs de uma janela do Explorer ou de cmd.exe funciona como esperado (iniciando meu programa). msconfig confirma que C:\MyCompany\Program\launch.vbs está listado na guia de inicialização. A guia de segurança das Propriedades do Arquivo indica que todos os usuários devem ter privilégios de leitura e execução. O mesmo acontece com o run.cmd realmente sendo chamado.

Neste ponto, não sei por que meu programa não está sendo iniciado e não consigo descobrir uma maneira eficiente de depurá-lo.

O sistema é o Windows 7 Professional de 64 bits.

Responder1

Com a ajuda do LPChip, iniciei a depuração da caixa de mensagens e confirmei que o script estava sendo iniciado, mas com erro. Eu atualizei o launch.vbs para

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

(observe o /k para manter a janela ativa e 1 para mostrar). A partir daí, ficou aparente que o java não está definido no caminho de classe para scripts iniciados via CurrentVersion\Run. Codificar o caminho para java (que nossos clientes serão forçados a usar de qualquer maneira) em run.cmd resolveu o problema.

informação relacionada