0

我正在尝试制作一个与本机消息传递主机(即 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

如您所见,我添加了一个以防"*"万一allowed_origins其他选项不适用于页面操作。

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

我仍然得到一个:

Specified native messaging host not found. 

我还检查了 ProccessExplorer 以查看 Chrome 加载了哪些应用程序,以防万一它被加载,但我在那里也看不到它。

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

有谁知道这里有什么问题?

4

4 回答 4

2

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

我之前遇到了一个问题,exe无法运行,通过执行上述操作,我发现密钥中有一个小错字,我错过了。

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

于 2016-07-16T06:27:46.637 回答
2

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

于 2018-03-04T13:51:23.673 回答
1

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

[HKEY_LOCAL_MACHINE\SOFTWARE\Google\Chrome\NativeMessagingHosts

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

于 2016-12-15T17:29:03.730 回答
1

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

于 2018-10-21T18:33:46.590 回答