2008-09-17 105 views
40

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

+0

可能重复[如何创建自己的URL协议? (例如://...)](http://stackoverflow.com/questions/389204/how-do-i-create-my-own-url-protocol-eg-so) – 2017-04-30 08:07:14

回答

23

我认为这在MSDN中涵盖,请参阅Registering an Application to a URL Protocol

+0

这将只适用于IE浏览器。 – Oded 2011-05-01 19:01:31

+5

我正在编写基于oauth的应用程序,并且MSDN中描述的过程与Mozilla Firefox和Opera完全兼容(11.6) – 2012-04-26 13:28:17

19

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

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

10
  1. 转到Start然后在Findregedit - >应该打开Registry editor

  2. 点击鼠标右键HKEY_CLASSES_ROOT然后New - >Key

enter image description here

  • 在Key给由你想被称为URL中使用小写的名字(在我的情况下,这将是testus://sdfsdfsdf),然后点击鼠标右键testus - >然后New - >String Value并且没有价值地添加URL protocol
  • enter image description here

  • 然后,像您协议做添加其它项(右鼠标New - >Key)和类似testus创建层次结构 - >shell - >open - >command和里面command更改(Default)到您要启动的.exe的路径,如果您要传递参数到您的exe然后包装路径exe文件""并添加"%1"的样子:"c:\testing\test.exe" "%1"
  • enter image description here

  • 为了测试它的工作原理去Internet Explorer(不ChromeFirefox),并输入testus:have_you_seen_this_man这应该解雇你的.exe(给你有些提示你想这样做 - 说是)并传入参数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(); 
         } 
        } 
    } 
    

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