我已经被赋予了创build一个类似于callto的协议的任务,在点击链接后会自动启动已安装的应用程序。
我跟随微软指南如何计划应该看起来像。
我的计划如下所示:
HKEY_CLASSES_ROOT slican URL Protocol = "" DefaultIcon (Default) = "C:\Users\Okabe\Desktop\slican\SlicanP.exe,1" shell open command (Default) = "C:\Users\Okabe\Desktop\slican\SlicanP.exe" "%1""
我认为这是全部和testing
<a href="slican:test">test link</a> <a href="slican:0049325778421">test telephone link</a>
没有任何反应。 Internet Explorer询问我是否要search一个可以打开内容的程序,Chrome浏览器没有任何反应,就好像我点击了javascript:void(0)。
如何得到这个工作?
感谢您的帮助!
当我在Windows 7上进行尝试时,显示的注册对我来说工作得非常好。在我从“ Start | Run
“ Start | Run
调用slican:
URL时,我注册的本地应用程序代替SlicanP.exe运行正常Start | Run
Start | Run
菜单,并从Windows资源管理器的地址栏中。 所以注册工作。
请注意,Internet Explorer在较低的完整性安全上下文中运行,因此它可能无权运行本地程序。 当我试图点击一个HTML链接到一个slican:
URL,或者在地址栏中输入一个slican:
URL时,IE在执行本地应用程序时(即使在提示权限之后)也遇到了麻烦。 我必须以管理员身份运行IE,然后本地应用程序运行得很好。
此外,你真的不应该直接创建一个HKEY_CLASSES_ROOT\slican
键。 创建一个HKEY_CURRENT_USER\Software\Classes\slican
(仅限当前用户)或HKEY_LOCAL_MACHINE\Software\Classes\slican
(所有用户)。 有关更多详细信息,请参阅MSDN:
HKEY_CLASSES_ROOT密钥
合并查看HKEY_CLASSES_ROOT
更新 :由于它在Windows 7中工作,微软可能已经改变了在Windows 8中注册URL方案的方式。例如,手机/商店应用程序使用URI激活:
URI激活(XAML) 。
URI激活(HTML)
该文档说有两种方法来注册自定义URI方案:
Internet Explorer使用两种机制来注册新的可插入协议处理程序。 第一种方法是注册URI方案名称及其关联的应用程序,以便使用该方案导航到URI的所有尝试启动应用程序(例如注册应用程序以处理mailto:或news:URI)。 第二种方法使用异步可插入协议API,它允许您通过将URI方案映射到一个类来定义新的协议。
你正在做第一个。 尝试使用第二个。
但是,我注意到“异步可插入协议”在MSDN的“Legacy APIs”部分中列出,它具有以下注释:“第三方协议实现不会在使用JavaScript的Windows Store应用程序中加载, 新的Windows用户界面中的Internet Explorer “。 所以它可能会或可能不会在Windows 8中工作。
更新 :我刚刚发现这个:
文件类型和URI的准则
在Windows 8中,应用程序和它们支持的文件类型之间的关系与以前版本的Windows不同。
演练:使用Windows 8自定义协议激活
Windows 8中的文件类型和协议关联模型已更改。应用程序不再能够以编程方式将自己设置为文件类型或协议的默认处理程序。 相反,现在用户总是控制文件类型或协议的默认处理程序。
您的应用程序可以使用现有的协议进行通信,例如mailto,或创建自定义协议。 协议激活扩展使您能够定义自定义协议或注册来处理现有的协议。
也看看这个:
在Windows 8中以编程方式设置mailto:协议处理程序
和这个:
默认程序
如果您转到C:\ Users \\ AppData \ Local \ Google \ Chrome \ User Data
您可以编辑本地状态文件
搜索protocol_handler
这里的语法是一个关键值对。 我通常复制两个mailto:并确保您将您的协议设置为false。 这将意味着chrome会将您的新协议视为URI_Handler事件
如果您在配置自定义URI方案时遇到麻烦,可以将自己的配置与现有的配置进行比较。 例如,“HKEY_CLASSES_ROOT / mailto” – 很可能你已经在你的系统中。