无法在Windows上启动本机消息传递主机," COMSPEC未设置"

时间:2017-03-02 10:20:54

标签: google-chrome google-chrome-extension chrome-native-messaging

我有一个chrome扩展程序,它与本机消息传递主机通信以获取一些数据。

问题是,当我通过快捷方式或通过任务栏中的固定快捷方式启动Chrome浏览器时,扩展程序无法连接到主机。我总是得到错误:

  

无法启动本机消息传递主机。

但是,如果我通过命令提示符启动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进程后,我发现在通过COMSPEC生成时,没有可用的explorer环境变量。

还有什么我可以尝试或者我在这里缺少的东西吗?

1 个答案:

答案 0 :(得分:1)

正如日志中所述,Chrome无法启动外部流程,因为COMSPECenvironment variable pointing normally to cmd未设置:

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

cmd本身启动Chrome的行为不同,因为它为自己设置变量(生成的进程)。

可以通过Process Explorer检查Chrome进程来确认。

可以以管理员身份运行rundll32 sysdm.cpl,EditEnvironmentVariables(例如从管理员命令行)以打开环境变量设置 或者,可以从控制面板>导航到对话框。系统和安全性>系统>高级系统设置>高级>环境变量......

ComSpec通常在系统变量中设置为

C:\WINDOWS\system32\cmd.exe

根据需要进行系统安装调整。要应用此设置,您需要注销并重新登录,或者更好地重新启动系统。