1

我有一個chrome擴展與本地消息傳遞主機通信以獲取一些數據。未能在Windows上啓動本地消息傳遞主機,「未設置COMSPEC」

問題是,當我通過快捷方式或任務欄中固定的快捷方式啓動Chrome瀏覽器時,擴展程序無法連接到主機。我總是得到錯誤:

Failed to start native messaging host.

但是,如果我通過命令提示符啓動chrome.exe,一切工作正常。

事情我沒有成功嘗試:

  • 任務欄快捷方式已經沒有多餘的標誌。目標字段具有 以下值:"C:\Program Files(x86)\Google\Chrome\Application\chrome.exe"
  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Google\Chrome\NativeMessagingHosts\com.company.extension
  • 下與註冊表試過我HKEY_LOCAL_MACHINE\SOFTWARE\Google\Chrome\NativeMessagingHosts\com.company.extension
  • 下與註冊表試過我 HKEY_CURRENT_USER\Software\Google\Chrome\NativeMessagingHosts\com.company.extension
  • 試圖啓動crome.exe作爲下與註冊表項嘗試管理員從文件資源管理器。

更新:

我加入了標誌--enable-logging --v=1到快捷方式啓用日誌記錄,當我啓動它,我得到的控制檯輸出如下:

[11036:4160:0302/113902.866:ERROR:native_process_launcher_win.cc(140)] COMSPEC is not set 
[11036:11856:0302/113902.882:ERROR:native_process_launcher_win.cc(140)] COMSPEC is not set 

更新

通過Process Monitor調查chrome.exe過程後,我發現nd在通過explorer生成環境變量時,沒有可用的環境變量COMSPEC

還有什麼我可以嘗試或我在這裏失蹤的東西?

+0

此錯誤意味着至少Chrome [嘗試啓動](https://cs.chromium.org/chromium/src/chrome/browser/extensions/api/messaging/native_message_process_host.cc?l=114&rcl=c463181850479e23e89ebd766fbe1fa2990d9d51)因此您可能會在[procmon](https://technet.microsoft.com/en-us/sysinternals/processmonitor.aspx)中看到與「進程創建」相關的內容。 – wOxxOm

+0

還應該[啓用並檢查Chrome日誌](https://www.chromium.org/for-testers/enable-logging)。可能的想法:快捷方式改變的是工作目錄。 – Xan

+0

@Xan是的,我通過添加日誌標記在控制檯中出現錯誤。我更新了錯誤的問題。 –

回答

1

正如在日誌中所提到的,鉻絆倒啓動外部過程中,由於COMSPEC,一個environment variable pointing normally to cmd,是沒有設置:

[11036:4160:0302/113902.866:ERROR:native_process_launcher_win.cc(140)] COMSPEC is not set 

的行爲是從cmd啓動Chrome本身不同的,因爲它設置了可變爲自己(ans衍生的過程)。

這可以通過檢查Chrome進程Process Explorer加以確認。

作爲管理員(例如,從管理員命令行)可以運行rundll32 sysdm.cpl,EditEnvironmentVariables來打開環境變量設置。
或者,可以從控制面板>系統和安全>系統>高級系統設置>高級>環境變量...導航到對話框。

ComSpec通常在系統變量設置爲

C:\WINDOWS\system32\cmd.exe 

爲您的系統中安裝必要的調整。要應用此設置,您需要註銷並重新登錄,或者更好地重新啓動系統。