NSISスクリプトを使用してインストールするプログラムがあります。インストーラーの最後のステップは、レジストリの実行キーに書き込み、起動時にプログラムを実行することです。私はそれを確認しました
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が実際に呼び出されるのと同じです。
この時点で、プログラムが起動されない理由がわからなくなっており、プログラムをデバッグするための効率的な方法がわかりません。
システムはWindows7 Professional64ビットです。
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が設定されていないことが明らかになりました。パスをJava(Java $ ===)にハードコーディングします。私たちのクライアントはとにかく使用することを余儀なくされます)run.cmdで問題を解決しました。