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 

为您的系统中安装必要的调整。要应用此设置,您需要注销并重新登录,或者更好地重新启动系统。