如何配置Chrome Native Messaging Host带参数启动?
Chrome Native Messaging Host 带启动参数的解决方案
Native Messaging 原生支持带参数启动,以下是两种稳定可行的实现方案:
方案1:使用manifest官方args配置项(优先推荐)
Chrome Native Messaging 的 manifest 规范原生提供了args可选字段,专门用于传递启动参数,无需拼接在路径中。配置示例如下:
{ "name": "correct.name.host", "description": "你的原生主机描述", "path": "C:\\完整路径\\crypto-extension-host.exe", "type": "stdio", "allowed_origins": [ "chrome-extension://你的扩展ID/" ], // 新增args字段,按顺序填写所有启动参数即可 "args": ["-Dconfig.file=test-application.conf"] }
Chrome 启动主机时会自动将args数组中的参数传递给目标exe,无需额外处理即可正常使用stdio通信。
方案2:修复批处理脚本的stdio透传问题
如果因特殊场景无法使用args配置,之前批处理脚本失效的原因是错误使用了start等会创建独立子进程的命令,导致Chrome创建的stdio通信管道无法和目标exe绑定。使用如下写法的bat脚本即可正常通信:
@echo off :: 不要加start命令,直接调用exe即可自动继承当前脚本的stdio管道 "C:\完整路径\crypto-extension-host.exe" -Dconfig.file=test-application.conf
配置时将manifest的path字段改为该bat文件的完整路径即可。
原问题错误原因说明
- 参数直接拼接在path字段无效:Chrome会将整个path字符串当做单一文件路径查找,不会做命令行参数拆分,因此系统会报错找不到对应二进制文件
- 错误bat脚本失效:使用
start命令会让exe在独立新进程中运行,脱离Chrome的stdio通信管道,导致无法收发消息
内容的提问来源于stack exchange,提问作者omastik
相关产品推荐
相关产品推荐

