![如何让 Chrome 接受自定义协议处理程序](https://linux22.com/image/1453898/%E5%A6%82%E4%BD%95%E8%AE%A9%20Chrome%20%E6%8E%A5%E5%8F%97%E8%87%AA%E5%AE%9A%E4%B9%89%E5%8D%8F%E8%AE%AE%E5%A4%84%E7%90%86%E7%A8%8B%E5%BA%8F.png)
我可以让我的网络应用程序让 Chrome 注册一个自定义的“web+”协议处理程序,以便它显示在设置->(高级)->隐私->内容设置->处理程序->管理处理程序下。
但是,它将站点显示为“无”,尽管我的站点出现在下拉菜单中,但是当我在下拉菜单中选择我的站点时,Windows 会向我显示一条消息“未安装任何应用程序来打开此类链接(web+mycustomscheme)...请在商店中查找应用程序”,单击 Windows 消息后会返回显示“无”的下拉菜单(单击我的自定义方案中的链接不起作用)。
我如何让它接受我的网站作为处理程序?
顺便说一句,这在 Firefox 中运行良好。
答案1
对于第一个问题(让 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,除非您具有提升权限,否则将拒绝您的访问。
希望这能有所帮助。祝你好运。