打印

BX2003: 特定的 URL 伪协议需安装提供该协议的特定软件才有效

作者:丁宗秋

标准参考

关于协议注册的更多信息,请参考如下链接:

  1. Registering an Application to a URL Protocol
  2. mozilla Register protocol

问题描述

特定的 URL 伪协议需安装特定软件才有效。

造成的影响

特定的协议某些浏览器不支持。

受影响的浏览器

所有浏览器  

问题分析

一、关于协议的简要描述

百科全书对协议的定义是:"在两个计算端点之间建立或控制连接、通信或数据传输的约定或标准" 。实际上这些端点可以是两个单独的计算机,也可以是一个计算机中两个单独的点。

例如,从内存读取数据时,计算机必须访问硬盘上的存储区,通过数据总线将数据转移到内存,然后再将其传送至处理器。在每个端点,数据必须具有某种形式,以便发送方和接收方都能够恰当地处理数据。在最底层,数据就是一堆比特位的集合。只有在某个上下文中理解,这些比特集合才具有含义。如果发送方和接收方端点不能就上下文达成一致,那么被传输的数据就是无意义的。因此,协议是数据传输的基础。

我们常用类型的协议包括:IP TCP HTTP FTP Telnet POP3 SOAP SMTP SSH 等。
协议的运作,必须由特定的处理器与之关联。该处理器可以是软件程序,硬件,或软硬件结合体。
在 Windows 系统中,协议和它的处理器之间的关系,由注册表描述。也就是说,在一个协议可用前,我们必须先在注册表中注册,以描述该协议关联的处理器。
如下,是一个 ".reg" 文件,它描述了 "foo" URL协议,以及它的处理器 "program.exe"。

REGEDIT4 [HKEY_CLASSES_ROOT\foo] @="URL:foo Protocol" "URL Protocol"=""
                [HKEY_CLASSES_ROOT\foo\shell] [HKEY_CLASSES_ROOT\foo\shell\open]
                [HKEY_CLASSES_ROOT\foo\shell\open\command] @="\"C:\\Program
                Files\\Application\\program.exe\" \"%1\""

双击运行该 ".reg" 文件,即可注册 "foo" URL协议。类似此类自定义的,非公共(如: HTTP )的协议,我们称之为伪协议。如果是自定义的 URL 协议,我们可称之为 URL 伪协议。

二、差异及可能产生的问题

协议 "tencent://" 和 "msnim:chat" 是安装了 QQ 或 MSN 应用程序后,注册到本地系统的 URL 伪协议。要使其能正常运行,需在本地系统安装 QQ 或 MSN 应用程序。
请参考上一章中关于 URL 伪协议的说明,再观察如下腾讯的 Tencent://Message 协议的注册表文件(".reg")

Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Tencent] @="TencentProtocol"
                "URL Protocol"="D:\\Program Files\\Tencent\\QQ\\Timwp.exe"
                [HKEY_CLASSES_ROOT\Tencent\DefaultIcon] @="D:\\Program Files\\Tencent\\QQ\\Timwp.exe,1"
                [HKEY_CLASSES_ROOT\Tencent\shell] [HKEY_CLASSES_ROOT\Tencent\shell\open]
                [HKEY_CLASSES_ROOT\Tencent\shell\open\command] @="\"D:\\Program
                Files\\Tencent\\QQ\\Timwp.exe\" \"%1\""

在浏览器地址栏中输入 "tencent://message/?uin=123",要打开本地 QQ 聊天窗口,首先是要在注册表中找到 "Tencent" 协议,然后调用 Timwp.exe 文件,并传入参数( uin=123 ),如果 QQ 帐号有效则弹出 QQ 聊天窗口。
根据以上的分析,要想打开 "tencent://" 之类的协议地址,必须要在本地安装相应的应用程序,以注册相关的协议,否则无法打开。

解决方案

某些协议是由特定的厂商自定义的,如:"tencent://" 和 "msnim:chat" 之类,需安装特定的客户端软件以注册该类伪协议,方可正常使用。例如,安装 QQ 或 MSN 应用程序。

参见

知识库

相关问题

测试环境

操作系统版本: Windows 7 Ultimate build 7600
浏览器版本: IE6
IE7
IE8
Firefox 3.6
Chrome 4.0.302.3 dev
Safari 4.0.4
测试页面:
本文更新时间: 2010-06-18

关键字

协议 伪协议 URL encent msnim:chat