如何在Windows中注册自定义URL协议?
如何在Windows中注册自定义协议,以便在单击电子邮件中的链接或网页时打开我的应用程序,并将URL中的parameter passing给它?
我认为这是在MSDN中介绍的,请参阅注册应用程序到URL协议 。
MSDN链接很好,但是那里的安全信息并不完整。 处理程序注册应该包含“%1”,而不是%1。 这是一个安全措施,因为在调用自定义协议处理程序之前,某些URL源错误地解码了%20。
PS。 您将获得整个url,而不仅仅是url参数。 但是除了已经提到的%20->空间转换之外,URL可能受到一些虐待。 这有助于在URL语法devise中保守。 不要随便乱扔//否则你会陷入乱七八糟的文件:// is。
-
转到
Start
然后在Find
typesregedit
– >它应该打开Registry editor
-
在
HKEY_CLASSES_ROOT
上单击鼠标右键 ,然后单击New
– >Key
- 在键给你想要的URL小写名称(在我的情况下,它将是
testus://sdfsdfsdf
),然后单击鼠标右键在testus
– >然后New
– >String Value
并添加URL protocol
没有价值。
- 然后像使用协议( 鼠标右键
New
– >Key
)一样添加更多条目,并创build像testus
– >shell
– >open
– >command
和command
内部command
更改(Default)
到您要启动的.exe
的path,如果你想传递参数到你的exe文件,然后将path包装到""
并添加"%1"
,如下所示:"c:\testing\test.exe" "%1"
- 要testing它是否工作到
Internet Explorer
(不是Chrome
或Firefox
),并inputtestus:have_you_seen_this_man
这应该激发你的.exe
(给你一些提示,你想这样做 – 说是),并传递到argstestus://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(); } } }
希望这可以为你节省一些时间。