无法在 Windows、"COMSPEC is not set" 上启动本机消息传递主机

Failed to start native messaging host on Windows, "COMSPEC is not set"

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

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

Failed to start native messaging host.

但是,如果我通过命令提示符启动 chrome.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

更新

通过进程监视器调查 chrome.exe 进程后,我发现当它通过 explorer.

生成时,没有 COMSPEC 环境变量可用。

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

如日志中所述,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 的行为是不同的,因为它为自己设置变量(ans spawned processes)。

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

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

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

C:\WINDOWS\system32\cmd.exe

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