打开Chrome时,本机消息传递主机无法启动

时间:2014-11-20 15:04:51

标签: google-chrome-extension chrome-native-messaging

我正在尝试创建一个与本机消息传递主机(即EXE文件)通信的页面操作扩展。

我已经安装了我的扩展程序,我看到它的UI按预期工作,但EXE未启动。 我是否需要自己做一些事情才能从中做到这一点? :

port = chrome.runtime.connectNative(hostName);

我已将主机安装在注册表中,如下所示:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Google\Chrome\NativeMessagingHosts\com.google.chrome.example.echo] @="C:\Users\me\Desktop\nativeMessaging\host\com.google.chrome.example.echo-win.json"

(我也手动添加了这个,因为x86和x64位版本的荨麻疹似乎很乱......)

主机清单文件:

{
  "name": "com.google.chrome.example.echo",
  "description": "Chrome Native Messaging API Example Host",
  "path": "native-messaging-example-host.bat",
  "type": "stdio",
  "allowed_origins": [
    "chrome-extension://knldjmfmopnpolahpmmgbagdohdnhkik/",
    "*"
  ]
}

native-messaging-example-host.bat内,我有:

MyExeName.exe

正如您所看到的,我在"*" JUST IN CASE中添加了allowed_origins,其他选项不适合页面操作。

我还尝试将EXE名称直接放在清单文件中,但又没有运气。

我仍然得到:

Specified native messaging host not found. 

我还会检查ProccessExplorer以查看Chrome加载的应用程序,以防它被加载,但我也没有看到它。

奇怪的是,我已经开始修改Google的本机消息传递主机示例,我认为它是作为应用程序运行的。当我把它变成页面动作扩展时它停止了工作。

有没有人知道这里有什么问题?

4 个答案:

答案 0 :(得分:2)

除了打开日志记录外,您还可以采用sysinternals中使用procmon的方法。它就像regmon和filemon一样,所以你可以按照chrome查询注册表键,然后读取清单,然后运行可执行文件,你就可以看到它出错了。

之前我遇到过一个问题,exe不会运行,通过上面的操作,我发现钥匙上有一个小错字,我错过了。

要启用日志记录,请查看以下内容:https://www.chromium.org/for-testers/enable-logging例如您可以使用以下命令行参数启动浏览器:--vmodule=extension_updater=2 --enable-logging

答案 1 :(得分:2)

我有类似的问题:chrome正在创建端口,但没有启动程序。跟踪Sysinternals procmon.exe我发现该活动在调用C:\Programs\TCCLE\tcc.exe时停止。我使用Take Command作为cmd.exe替换,并将环境变量ComSpec设置为C:\Programs\TCCLE\tcc.exe;我将ComSpec更改回C:\WINDOWS\system32\cmd.exe并启动了该程序。

答案 2 :(得分:1)

我有类似的问题。启用日志记录没有帮助。原来是我的注册表项:

[HKEY_LOCAL_MACHINE \ SOFTWARE \谷歌\铬\ NativeMessagingHosts

我在EXE和路径周围有引号,例如“C:\ Temp \ Chrome \ ChromeNativeApp.exe”与C:\ Temp \ Chrome \ ChromeNativeApp.exe

答案 3 :(得分:1)

我有类似的问题。这里没有任何帮助。使问题消失的原因是将主机名从“ com.me.DbServer”更改为“ com.me.test”。这种变化使一切突然起作用。我想DbServer是保留名称,或者更有可能不允许使用大写字母。我正在使用Chrome 69。