【发布时间】:2017-07-22 00:26:13
【问题描述】:
我有一个 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 - 尝试从文件资源管理器中以管理员身份启动
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至少是tried to launch主机所以你可能会在procmon中看到与
Process Create相关的内容。 -
还应该enable and examine Chrome logs。可能的想法:快捷方式改变的是工作目录。
-
@Xan 是的,我通过添加日志标志在控制台中遇到错误。我已经用错误更新了问题。
-
查看crbug.com/387233 和other bugs 了解COMSPEC
-
查看变量是否在
rundll32 sysdm.cpl,EditEnvironmentVariables的系统变量中设置(从管理员命令提示符运行)。它不是,设置它并注销或重新启动以测试。如果这有帮助,我会把它变成一个答案。
标签: google-chrome google-chrome-extension chrome-native-messaging