Google chrome 无法在Windows上启动本机消息传递主机;“未设置COMSPEC”;

Google chrome 无法在Windows上启动本机消息传递主机;“未设置COMSPEC”;,google-chrome,google-chrome-extension,chrome-native-messaging,Google Chrome,Google Chrome Extension,Chrome Native Messaging,我有一个chrome扩展,它与本地消息主机通信以获取一些数据 问题是,当我通过快捷方式或任务栏中的固定快捷方式启动Chrome浏览器时,扩展无法连接到主机。我总是会出错: 无法启动本机消息传递主机 但是,如果我通过命令提示符启动chrome.exe,一切正常 我尝试过但没有成功的事情: 任务栏快捷方式没有额外的标志。目标字段具有 以下值:“C:\ProgramFiles(x86)\Google\Chrome\Application\Chrome.exe” 我在HKEY\U LOCAL\U MA

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

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

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

但是,如果我通过命令提示符启动
chrome.exe
,一切正常

我尝试过但没有成功的事情:

  • 任务栏快捷方式没有额外的标志。目标字段具有 以下值:
    “C:\ProgramFiles(x86)\Google\Chrome\Application\Chrome.exe”
  • 我在
    HKEY\U LOCAL\U MACHINE\SOFTWARE\Wow6432Node\Google\Chrome\NativeMessagingHosts\com.company.extension
  • 我在
    HKEY\U LOCAL\U MACHINE\SOFTWARE\Google\Chrome\NativeMessagingHosts\com.company.extension下尝试了注册表
  • 我试着用下面的注册表项
    HKEY\u CURRENT\u USER\Software\Google\Chrome\NativeMessagingHosts\com.company.extension
  • 尝试从文件资源管理器以管理员身份启动
    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
更新

通过process Monitor调查
chrome.exe
进程后,我发现通过
explorer
生成的
COMSPEC
环境变量不可用


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

如日志中所述,Chrome无意中启动了一个外部进程,因为,
COMSPEC
,一个,未设置:

[11036:4160:0302/113902.866:ERROR:native_process_launcher_win.cc(140)] COMSPEC is not set
cmd
本身启动Chrome的行为不同,因为它为自身设置变量(ans派生的进程)

这可以通过检查镀铬工艺来确认

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

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

C:\WINDOWS\system32\cmd.exe

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

此错误意味着至少要在主机上进行Chrome操作,以便您可以在中看到与
Process Create
相关的内容。您也应该这样做。可能的想法:快捷方式更改的是工作目录。@Xan是的,我在控制台中添加了日志标记,出现了一个错误。我已经用错误更新了问题。请参阅和,有关ComSpec,请参阅是否在系统变量中的
rundll32 sysdm.cpl,EditEnvironmentVariables
(从管理员命令提示符下运行)设置了变量。如果不是,请将其设置并注销或重新启动以进行测试。如果有帮助的话,我会把它变成一个答案。