我有一个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
环境变量。
还有什么我可以尝试或者我在这里缺少的东西吗?
答案 0 :(得分:1)
正如日志中所述,Chrome无法启动外部流程,因为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的行为不同,因为它为自己设置变量(生成的进程)。
可以通过Process Explorer检查Chrome进程来确认。
可以以管理员身份运行rundll32 sysdm.cpl,EditEnvironmentVariables
(例如从管理员命令行)以打开环境变量设置
或者,可以从控制面板>导航到对话框。系统和安全性>系统>高级系统设置>高级>环境变量......
ComSpec
通常在系统变量中设置为
C:\WINDOWS\system32\cmd.exe
根据需要进行系统安装调整。要应用此设置,您需要注销并重新登录,或者更好地重新启动系统。