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


Answers:


63
  1. 转到Start然后Find键入regedit->它应该打开Registry editor

  2. 点击Right MouseHKEY_CLASSES_ROOT然后New- >Key

在此处输入图片说明

  1. 在主要由给您想要的网址被称为(对我来说这将是小写的名称testus://sdfsdfsdf),然后点击Right Mousetestus- >然后New- >String Value并添加URL protocol没有价值。

在此处输入图片说明

  1. 然后像添加协议一样添加更多条目(Right Mouse New-> Key),并创建testus-> shell-> open->层次结构,command然后在内部command更改要启动(Default)的路径.exe,如果要将参数传递给exe,则将路径包装到exe在""添加"%1"的样子:"c:\testing\test.exe" "%1"

在此处输入图片说明

  1. 要测试它是否有效,请转到Internet Explorer(否ChromeFirefox)并输入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();
        }
    }
}

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


3
哇,这东西行得通。不仅在IE上,而且在Chrome上!
user1974566

36

我认为这已在MSDN中涵盖,请参阅“将应用程序注册到URL协议”


5
我正在编写基于oauth的应用程序,并且MSDN中描述的过程与Mozilla Firefox和Opera(11.6)完美配合
Viktor Latypov 2012年

11
这适用于Windows上的所有浏览器。这是操作系统级别的事情,而不是浏览器级别的事情。
Andrew Dunkman

7
我赞成,但请按照SO政策修改答案,以包含链接中的相关信息。谢谢!
dotancohen 2014年

哪些Windows版本支持此功能?
ᆼᆺᆼ

21

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

PS。您将获得整个URL,而不仅仅是URL参数。但是,除了已经提到的%20-> space转换之外,URL可能还会受到一些虐待。在您的URL语法设计中保持保守很有帮助。不要随意// //否则会陷入file://的混乱局面。


“ file://的含义是什么”到底是什么意思?
Maleev

6
没有文件的正式映射:URL到本地路径。关于使用两个或三个前导斜杠,或者当路径指向Windows目录时使用正斜杠还是反斜杠,甚至都没有达成共识。
MSalters,2009年

我知道最新评论。但是,也可以不通过协议处理程序以某种方式访问URL参数吗?
Danilo Bargen 2010年

2
这听起来像一个单独的问题。不过,请务必直截了当。协议处理程序是接收URL的程序。“没有协议处理程序”,没有人可以解析URL和访问URL参数。
MSalters 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.