如何在Windows中注册自定义协议,以便在单击电子邮件或网页中的链接时打开我的应用程序并将URL中的参数传递给它?
Start
然后转到Find
类型regedit
- >它应该打开Registry editor
点击Right Mouse上HKEY_CLASSES_ROOT
然后New
- >Key
在主要由给您想要的网址被称为(对我来说这将是小写的名称testus://sdfsdfsdf
),然后点击Right Mouse上testus
- >然后New
- > String Value
并添加URL protocol
没有价值.
然后像添加协议(Right Mouse New
- > Key
)一样添加更多条目,并创建层次结构,如testus
- > shell
- > open
- > command
并在内部command
更改(Default)
到.exe
要启动的路径,如果要将参数传递给exe,则将路径包装到exe在""
和添加"%1"
看起来像:"c:\testing\test.exe" "%1"
要测试它是否有效,请转到Internet Explorer
(不是Chrome
或Firefox
)并输入testus:have_you_seen_this_man
它应该解雇你.exe
(给你一些提示你想要这样做 - 说是)并传入args testus://have_you_seen_this_man
.
这是测试的示例控制台应用程序:
using System; namespace Testing { class Program { static void Main(string[] args) { if (args!= null && args.Length > 0) Console.WriteLine(args[0]); Console.ReadKey(); } } }
希望这能为您节省一些时间.
我认为这在MSDN中有所涉及,请参阅将应用程序注册到URL协议.
MSDN链接很好,但那里的安全信息不完整.处理程序注册应包含"%1",而不是%1.这是一种安全措施,因为在调用自定义协议处理程序之前,某些URL源会错误地解码%20.
PS.您将获得整个URL,而不仅仅是URL参数.但除了已经提到的%20->空间转换之外,URL可能会受到一些虐待.在URL语法设计中保守一点很有帮助.不要乱扔//或者你会陷入文件://的混乱.