Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows上.NET应用程序的本机消息传递_.net_Windows_Google Chrome Extension_Chrome Native Messaging - Fatal编程技术网

Windows上.NET应用程序的本机消息传递

Windows上.NET应用程序的本机消息传递,.net,windows,google-chrome-extension,chrome-native-messaging,.net,Windows,Google Chrome Extension,Chrome Native Messaging,我尽我所能地遵循了这个方法,但似乎无法让我的原生.NET应用程序在Windows上运行。在寻找其他信息的过程中,我注意到有些信息没有记录,也不清楚 首先,文档没有提到添加“nativeMessaging”权限的要求。在改变这一点之后,我走得更远了一点;Chrome现在在一个气球弹出窗口中提到“添加了新的背景应用程序” 然而,不管我做了什么尝试,下面的代码都会立即断开连接 var port = chrome.runtime.connectNative( ... ); port.onDisconne

我尽我所能地遵循了这个方法,但似乎无法让我的原生.NET应用程序在Windows上运行。在寻找其他信息的过程中,我注意到有些信息没有记录,也不清楚

首先,文档没有提到添加“nativeMessaging”权限的要求。在改变这一点之后,我走得更远了一点;Chrome现在在一个气球弹出窗口中提到“添加了新的背景应用程序”

然而,不管我做了什么尝试,下面的代码都会立即断开连接

var port = chrome.runtime.connectNative( ... );
port.onDisconnect.addListener(
    function()
    {
        console.log( "Disconnected" );
    } );
根据我调试这件事的尝试,我有几个问题:

  • 在Windows上,Chrome什么时候尝试从注册表中的NativeMessagingHosts加载清单?换句话说,我应该在更改值时重新启动Chrome,还是在chrome://extensions/“
  • 注册表中的绝对路径,应该如何格式化?例如,我见过有人在路径分隔符工作时只使用“\\\\\”斜杠。它需要周围的报价吗
  • 是否有任何方法可以获取有关出错原因的更多信息?出于测试目的,我重命名了注册表项,以查看是否会出现其他错误(假设由于无法加载,它会通知我)。相反,“onDisconnect”似乎仍然被称为
  • 与注册表中的路径类似,在注册表值指向要格式化的本机应用程序清单文件中,指向本机应用程序的相对路径应该如何设置?(,但只是为了确定哪些有效,哪些无效…)

  • 现在似乎有太多的变量让我无法调试它,而且我无法立即验证我的注册表值是否至少设置正确。

    我让它工作起来,我想我会尝试以尽可能多的不同方式再次打破我的解决方案,以回答我最初提出的问题。然而,我不记得/不知道为什么它以前不起作用。事实上,它是在我放弃之后才开始工作的;自从安装了一个更新(34.0.1847.116 m)后,我不得不重新启动Chrome,之后我的原生应用程序突然出现,因为我正在使用的插件仍然处于启用状态

    除此之外,下面是一份报告,通过更改某些内容并查看本机应用程序是否仍在启动,来说明哪些是有效的,哪些是无效的

    1。在Windows上,Chrome何时尝试从注册表中的
    NativeMessagingHosts
    加载清单?

    每当您在正在开发的扩展上单击“重新加载”chrome://extensions/,将再次从注册表加载本机主机。换句话说,单击“重新加载”即可验证清单文件和注册表是否正确设置

    2。注册表中的绝对路径,应如何格式化?

    这是一个有效注册表值的示例:

    C:\Users\Bleh\Some\Path即使在 Spaces\No\Problem\someManifestFile.json

    • 没有周围的引号
    • 使用单个反斜杠可以工作,向前斜杠也可以工作,甚至可以无限量地使用斜杠例如“C:\Some\\非常奇怪\路径”
    • 需要“.json”扩展名
    • 它必须是绝对的
    3。有没有办法获得更多关于问题所在的信息?

    好吧,您可能可以查看Chromium的源代码来确定到底发生了什么,但除此之外,我看不到任何更广泛的反馈,您可以从提供的API中获得

    4。清单中的路径应如何格式化? 文档中的示例似乎是正确的:

    “路径”:“C:\\Program Files\\My” 应用程序\\chrome\u本机\u消息传递\u主机.exe“

    • 需要两个反斜杠作为分隔符
    • 路径可以是相对的

    我也在上发布了这篇文章,但现在显然是这样,所以决定在这里交叉发布。只是想一想:你的Chrome是32位的吗?你是否将注册表项添加到32位的配置单元(WOW6432节点)?我想是
    必须在那里。我认为当你在Chrome的设置部分刷新/重新加载扩展时,清单也会被加载。调试部分很糟糕,这就是为什么我使用了另一种方法:你已经知道的signer。@Scoregraphic让它工作起来,并将我的发现作为答案发布在这里。看看它是否也回答了你原来的问题会很好。