如何让 Chrome 接受自定义协议处理程序

Bre*_*mir 3 google-chrome protocol

我可以让我的网络应用程序让 Chrome 注册一个自定义的“web+”协议处理程序,以便它显示在“设置”->(高级)->“隐私”->“内容设置”->“处理程序”->“管理处理程序”下。

但是,它将该网站显示为“无”,尽管我的网站显示在下拉菜单中,但当我在该下拉菜单中选择我的网站时,Windows 会向我显示一条消息:“没有安装任何应用程序来打开此类类型的网站”。链接 (web+mycustomscheme)...在商店中查找应用程序”,单击 Windows 消息将返回到显示“无”的下拉菜单(并且单击我的自定义方案中的链接不起作用)。

如何让它接受我的网站作为处理程序?

顺便说一句,这在 Firefox 中工作得很好。

小智 5

对于第一个问题(让 Chrome 使用自定义协议注册您的应用程序),根据我最近尝试激活自定义协议的外部 URL 的工作,Chrome 仍然不能很好地处理这一问题。

这里的错误(https://bugs.chromium.org/p/chromium/issues/detail?id=560809)与从多功能框或命令行启动这些协议有关,但我也认为它适用于链接通过 javascript 激活(window.location 或使用该 src 创建 iframe)。

据我所知,这仍然是一个悬而未决的问题。

现在 - 在第二部分(Windows 表示它不知道如何处理协议并提供 App Store)。您必须通过注册表向 Windows 注册您的协议。这就像在 HKEY_CURRENT_USER\Software\Classes 中添加特殊格式的密钥一样简单,如下所述:https ://msdn.microsoft.com/en-us/library/aa767914(v=vs.85).aspx

注意 - 如果您按照该页面上的说明进行操作,您将为该计算机的所有用户注册一个协议处理程序,并且执行注册的应用程序将需要提升(管理员)。如果您使用 HKEY_CURRENT_USER\Software\Classes 而不是 HKEY_CLASSES_ROOT,您的注册仍将显示在 HKEY_CLASSES_ROOT 下,但不需要管理员创建,但它仅适用于当前用户。所以——选择你的毒药吧。

HKEY_CLASSES_ROOT 是一种视图,由 HLEY_CURRENT_USER 中的所有 \Software\Classes 与 HKEY_LOCAL_MACHINE 组合而成。我相信但尚未确认 HKCU 会覆盖 HKLM,但如果您尝试直接在 HKEY_CLASSES_ROOT 中创建密钥,它会尝试将其写入 HKLM,从而拒绝您的访问,除非您具有提升权限。

我希望这有帮助。祝你好运。