프로그램이 레지스트리 실행 키에서 실행되지 않음

프로그램이 레지스트리 실행 키에서 실행되지 않음

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

이제 시작 시 메모장이 실행됩니다. 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

탐색기 창이나 cmd.exe에서 launch.vbs 호출이 예상대로 작동하는 것을 확인했습니다(내 프로그램 시작). msconfig는 C:\MyCompany\Program\launch.vbs가 시작 탭에 나열되어 있는지 확인합니다. 파일 속성의 보안 탭에는 모든 사용자가 읽기 및 실행 권한이 있어야 함을 나타냅니다. 실제로 호출되는 run.cmd도 마찬가지입니다.

이 시점에서 나는 왜 내 프로그램이 시작되지 않는지 알 수 없으며 프로그램을 디버깅하는 효율적인 방법을 찾을 수 없습니다.

시스템은 Windows 7 Professional 64비트입니다.

답변1

LPChip의 도움으로 메시지 상자 디버깅을 시작하고 스크립트가 시작되고 있음을 확인했지만 오류가 발생했습니다. launch.vbs를 다음으로 업데이트했습니다.

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

(창을 활성 상태로 유지하려면 /k를, 표시하려면 1을 참고하세요.) 거기에서 CurrentVersion\Run을 통해 실행되는 스크립트의 클래스 경로에 java가 설정되지 않은 것이 분명해졌습니다. run.cmd에서 java 경로(어차피 클라이언트가 사용해야 하는 경로)를 하드 코딩하여 문제를 해결했습니다.

관련 정보