1

我正在编写一个在 Windows 8 上注册“tel”协议的应用程序,因此当我打开“开始”>“运行”时,输入 tel:1234 并按 Enter 我的应用程序启动并拨打电话到 1234。这在 XP、Win7 上成功运行和Win8。但是,在 Win8 上,我发现当我安装 Google Chrome 时,它​​会“接管”对 tel 协议的处理,所以当我再次运行 tel:1234 时,Chrome 会启动,而不是我的应用程序。Chrome 不会接管 Win7 或 XP 中的 tel 协议。我想了解问题所在。

目前,我的应用程序通过添加以下注册表项来注册 tel 协议,如将应用程序注册到MSDN 上的 URI 方案中所述:

HKEY_CLASSES_ROOT\tel
@="URL:My Tel Protocol Handler"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\tel\DefaultIcon]
@="C:\\MyTelProtocol.exe"

[HKEY_CLASSES_ROOT\tel\shell]

[HKEY_CLASSES_ROOT\tel\shell\open]

[HKEY_CLASSES_ROOT\tel\shell\open\command]
@="\"C:\\MyTelProtocol.exe\" -URI %1"

我发现 Google Chrome 不会用自己的方式覆盖我的注册表数据。相反,它似乎以不同的方式注册协议处理程序,但我不知道如何做同样的事情。有人知道为什么 Windows 8 会以不同的方式处理这个问题吗?

在此先感谢,马特

4

2 回答 2

1

您需要删除 Chrome 在安装过程中添加的“tel”注册表项。

HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\Google Chrome\Capabilities\UrlAssociations

之后,您需要将 win 8 推送到 relaod 注册表库(重新启动或其他方式),jabber 将成为 TEL:URI 的默认应用程序;)。

于 2013-06-26T13:15:45.573 回答
0

这是有关文件类型和协议关联模型 (Windows)的一些指南,它似乎适用于 Windows 8。也许可以试试?

此 codereview建议 Chrome 协议处理程序的代码位于此文件中,以防万一。

于 2012-12-16T20:48:10.480 回答