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

问题描述:

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

+0

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

我认为这在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

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

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

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

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

enter image description here

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

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

      1. 为了测试它的工作原理去Internet Explorer(不ChromeFirefox),并输入testus:have_you_seen_this_man这应该解雇你的.exe(给你有些提示你想这样做 - 说是)并传入参数testus://have_you_seen_this_man
      2. 这里的样本控制台应用程序进行测试:

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

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

      开始=>
    开始=>
开始=“3”>