レジストリ実行キーからプログラムが起動しない

レジストリ実行キーからプログラムが起動しない

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 ウィンドウなしでスクリプトを起動する 1 行のスクリプトです。

'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 へのパス (クライアントはいずれにしてもこれを使用せざるを得ません) をハードコーディングすることで、問題は解決しました。

関連情報