我正在编写一个在Windows8上注册"tel“协议的应用程序,因此当我打开”开始“>”运行“时,输入tel:1234,然后按回车键启动我的应用程序并拨打1234。这在XP、Win7和Win8上都能成功工作。然而,在Win8上,我发现当我安装Google Chrome时,它“接管”了对tel协议的处理,所以当我再次运行tel:1234时,启动的是Chrome而不是我的应用程序。Chrome不会接管Win7或XP中的tel协议。我想知道问题出在哪里。
目前,我的应用程序通过添加以下注册表项来注册tel协议,如MSDN上的Registering an Application to a URI Scheme中所述:
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会以不同的方式处理这个问题吗?
提前谢谢你,马特
发布于 2013-06-26 21:15:46
您需要删除Chrome在安装过程中添加的"tel“注册表项。
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\Google Chrome\
\UrlAssociations关联
在此之后,您需要推送win 8以重新加载注册库(重新启动或其他方式),jabber将成为TEL:URI;的默认应用程序。
发布于 2012-12-17 04:48:10
这里有一些关于File type and protocol associations model (Windows)的指南,它似乎适用于Windows8。也许可以试试?
This codereview建议将Chrome协议处理程序的代码放在this file中,以防它有任何用处。
https://stackoverflow.com/questions/13903499
复制相似问题