无法在 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
,一切正常。
我尝试过但没有成功的事情:
- 任务栏快捷方式没有额外的标志。目标字段具有
以下值:
"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
更新
通过进程监视器调查 chrome.exe
进程后,我发现当它通过 explorer
.
生成时,没有 COMSPEC
环境变量可用。
还有什么我可以尝试的或者我在这里遗漏的东西吗?
如日志中所述,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 的行为是不同的,因为它为自己设置变量(ans spawned processes)。
这可以通过使用 Process Explorer 检查 Chrome 进程来确认。
可以运行 rundll32 sysdm.cpl,EditEnvironmentVariables
作为管理员(例如从管理员命令行)打开环境变量设置。
或者,可以从“控制面板”>“系统和安全”>“系统”>“高级系统设置”>“高级”>“环境变量”导航到该对话框...
ComSpec
通常在系统变量中设置为
C:\WINDOWS\system32\cmd.exe
根据系统安装的需要进行调整。要应用此设置,您需要注销并重新登录,或者最好重新启动系统。
我有一个 chrome 扩展,可以与本地消息传递主机通信以获取一些数据。
问题是,当我通过快捷方式或任务栏中固定的快捷方式启动 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
- 尝试以管理员身份从文件资源管理器启动
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 无法启动外部进程,因为 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 spawned processes)。
这可以通过使用 Process Explorer 检查 Chrome 进程来确认。
可以运行 rundll32 sysdm.cpl,EditEnvironmentVariables
作为管理员(例如从管理员命令行)打开环境变量设置。
或者,可以从“控制面板”>“系统和安全”>“系统”>“高级系统设置”>“高级”>“环境变量”导航到该对话框...
ComSpec
通常在系统变量中设置为
C:\WINDOWS\system32\cmd.exe
根据系统安装的需要进行调整。要应用此设置,您需要注销并重新登录,或者最好重新启动系统。