如何在Windows中注册自定义URL协议?

如何在Windows中注册自定义协议,以便在单击电子邮件中的链接或网页时打开我的应用程序,并将URL中的parameter passing给它?

我认为这是在MSDN中介绍的,请参阅注册应用程序到URL协议 。

MSDN链接很好,但是那里的安全信息并不完整。 处理程序注册应该包含“%1”,而不是%1。 这是一个安全措施,因为在调用自定义协议处理程序之前,某些URL源错误地解码了%20。

PS。 您将获得整个url,而不仅仅是url参数。 但是除了已经提到的%20->空间转换之外,URL可能受到一些虐待。 这有助于在URL语法devise中保守。 不要随便乱扔//否则你会陷入乱七八糟的文件:// is。

  1. 转到Start然后在Findtypesregedit – >它应该打开Registry editor

  2. HKEY_CLASSES_ROOT上单击鼠标右键 ,然后单击New – > Key

在这里输入图像描述

  1. 在键给你想要的URL小写名称(在我的情况下,它将是testus://sdfsdfsdf ),然后单击鼠标右键testus – >然后New – > String Value并添加URL protocol没有价值。

在这里输入图像描述

  1. 然后像使用协议( 鼠标右键 New – > Key )一样添加更多条目,并创build像testus – > shell – > open – > commandcommand内部command更改(Default)到您要启动的.exe的path,如果你想传递参数到你的exe文件,然后将path包装到""并添加"%1" ,如下所示: "c:\testing\test.exe" "%1"

在这里输入图像描述

  1. 要testing它是否工作到Internet Explorer (不是ChromeFirefox ),并inputtestus:have_you_seen_this_man这应该激发你的.exe (给你一些提示,你想这样做 – 说是),并传递到args testus://have_you_seen_this_man

这里是示例控制台应用程序来testing:

 using System; namespace Testing { class Program { static void Main(string[] args) { if (args!= null && args.Length > 0) Console.WriteLine(args[0]); Console.ReadKey(); } } } 

希望这可以为你节省一些时间。