Windows 注册自定义的协议 实现通过网页调用本地程序的功能例如QQ等

1、注册应用程序来处理自定义协议

         你必须添加一个新的key以及相关的value到HKEY_CLASSES_ROOT中,来使应用程序可以处理特殊的URL协议。

         新注册的key必须与协议scheme相匹配才可以被添加。例如,增加一个“alert:”协议,被增加到HKEY_CLASSES_ROOT的key必须是alert。在这个新的key之下,默认的字符串value将显示新协议的名字,并且URL协议字符串value将包含协议特有的信息或者空字符串。Keys将同样被添加到DefaultIcon和shell中。

         默认的DefaultIcon key的字符串value必须是新URL协议图标文件名的路径。

         在shell key之下,一个key使用一个动词(就像open)将被添加。一个command(命令) key和一个DDEEXEC(动态数据交换执行) key都是使用动词来添加的。这command和DDEEXEC keys之后的values都是用来调用(或者启动)处理新协议的应用程序。

 

2、启动处理程序

         当一个用户点击一个注册了你的自定义URL协议的链接后,Windows Internet Explorer(IE)启动注册的URL协议的处理器。如果指定shellopen命令在注册表中包含一个%1参数的话,Internet Explorer传递这个URI给注册协议的处理器。这最后的统一资源标识符(URI)被编码(%1);即16进制换码符被转换为等价的UTF-16字符。例如,用%20字符串取代空格。

         安全警示:应用程序处理URL协议必须全力面对恶意数据。因为处理程序接收来自不信任源的数据,URL和其它参数值传递给应用程序可能包含的恶意数据企图使用处理程序。因此,处理程序可以首先启动基于外部数据的空闲行为确认这些行为以及它们的用户。

 

3、示例

Windows Registry Editor Version 5.00


[HKEY_CLASSES_ROOT\LxNetWork]

@="LxNetWorkProtocol"

"URL Protocol"="D:\\abc.exe"


[HKEY_CLASSES_ROOT\LxNetWork\DefaultIcon]

@="D:\\abc.exe,1"


[HKEY_CLASSES_ROOT\LxNetWork\shell]


[HKEY_CLASSES_ROOT\LxNetWork\shell\open]


[HKEY_CLASSES_ROOT\LxNetWork\shell\open\command]

@="\"D:\\abc.exe\" \"%1\""

3、调用

<a href="LxNetWork://Message"> dd</a> 

将这里的代码保存到TXT然后在改成HTML,打来试一下正常吗?

上一篇:【Android 插件化】Hook 插件化框架 ( 反射工具类 | 反射常用操作整理 )(一)


下一篇:上位机级,位机有符号无符号之间的关系及互换