为什么Windows会将完整的自定义网址(包括协议)传递给处理应用程序?

时间:2015-08-12 13:50:25

标签: windows registry protocols

我正在尝试创建自己的URL协议,以便从内部CRM中的URL启动自定义应用程序。

我已经创建了以下注册表项:

REGEDIT4

[HKEY_CLASSES_ROOT\smon1]
@="URL:smon Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\smon1\shell]

[HKEY_CLASSES_ROOT\smon1\shell\open]

[HKEY_CLASSES_ROOT\smon1\shell\open\command]
@="\"C:\\smon.exe\" \"%1\"" 

我的网站上有以下链接:

<a href='smon:1955'>1955</a>

我希望这会将变量1955传递给aplication c:\ smon.exe。 然而,它传递的是整个变量&#34; smon:1955&#34;。

为什么传递所有内容而不是变量?

我在这里缺少什么?

2 个答案:

答案 0 :(得分:2)

你没有遗漏任何东西,这就是处理程序的工作方式;整个URI在命令行中传递。检测并解析它。

理由是,它允许多个协议与同一个可执行文件相关联,而无需在命令键中提供自定义区分开关。

答案 1 :(得分:0)

举个例子

  

<a href="http://www.example.com">An Example</a>

将其传递给浏览器,并在网址栏中显示为http://www.example.com