文章《》(中译)描述了如何为┅个新的协议开发处理程序(处理器handlers)在一些案例中,可能会描述如何调用另外一个应用程序来处理自定义协议(custom protocol)注册已经存在的應用程序为一个URL协议处理器即可。一旦应用程序被成功地启动我们可以使用命令行参数来重新找回URL来启动它。
- 注册应用程序来处理自定義协议
注册应用程序来处理自定义协议
你必须添加一个新的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协议图标文件名的路径(译注1:)
keys之后的values都是鼡来调用(或者启动)处理新协议的应用程序。
当一个用户点击一个注册了你的自定义URL协议的链接后Windows Internet Explorer(IE)启动注册的URL协议的处理器。如果指定shellopen命令在注册表中包含一个%1参数的话Internet Explorer传递这个URI给注册协议的处理器。这最后的统一资源标识符(URI)被编码(%1);即16进制换码符被转換为等价的UTF-16字符例如,用%20字符串取代空格
安全警示:应用程序处理URL协议必须全力面对恶意数据。因为处理程序接收来自不信任源的数據URL和其它参数值传递给应用程序可能包含的恶意数据企图使用处理程序。因此处理程序可以首先启动基于外部数据的空闲行为确认这些行为以及它们的用户。
注意:另外处理程序将要有能力处理URLs有可能太长或者包含意想不到(或者多余的)字符串。更多信息请参看《》