如何创建“自定义协议”并将其映射到应用程序?

时间:2010-10-18 23:05:25

标签: c# windows protocols

如何创建“自定义协议”?我知道您可以通过向HKEY_CLASSES_ROOT添加大量注册表项来创建URL协议,但这似乎只能在浏览器中使用。我还需要它在Windows资源管理器中工作。

我知道我可以编写一个客户端/服务器类型的界面,但我认为这对我的客户的需求(和预算)来说太过分了。

长话短说......

  • 第三方应用程序应致电:tbwx:<row_id>
  • 我的应用应该加载并删除数据库中的记录。

这听起来很简单(或者我认为)。有什么想法吗?

由于

2 个答案:

答案 0 :(得分:10)

至少在Windows 7上,只要向密钥添加URL Protocol类型为REG_SZ的值,就可以创建自定义协议。它不需要实际值,只需要存在即可。这是我刚创建的“回声协议”的一个简单示例,它可以在资源管理器中使用。

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\echo]
"URL Protocol"=""
@="Echo Protocol"

[HKEY_CLASSES_ROOT\echo\shell]

[HKEY_CLASSES_ROOT\echo\shell\open]

[HKEY_CLASSES_ROOT\echo\shell\open\command]
@="C:\\WINDOWS\\SYSTEM32\\CMD.EXE /Q /C (echo %1) && pause"

我发现它也适用于密钥HKCU\Software\ClassesHKLM\Software\Classes。但是,它未列在Control Panel\Programs\Default Programs\Set Associations列表中。其他密钥可能需要更新,或者必须以某种方式在Windows中注册。

我认为在旧版Windows XP及更高版本中它是相同或类似的。

答案 1 :(得分:4)

Registering an Application to a URL Protocol文章详细介绍了该过程。 uilitiyCodePlex可用于注册自定义URL协议。提供源代码。