程式未從註冊表運行鍵啟動

程式未從註冊表運行鍵啟動

我有一個使用 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 也是如此。

此時我不知道為什麼我的程式沒有啟動,我無法找到一種有效的方法來調試它。

系統是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 的路徑進行硬編碼(無論如何我們的客戶端都將被迫使用它)解決了這個問題。

相關內容