如何在Windows中注册自定义协议,以便在单击电子邮件或网页上的链接时打开我的应用程序,并将URL中的参数传递给它?
Answers:
转到Start然后Find键入regedit->它应该打开Registry editor
点击Right Mouse上HKEY_CLASSES_ROOT然后New- >Key
testus://sdfsdfsdf),然后点击Right Mouse上testus- >然后New- >String Value并添加URL protocol没有价值。New-> Key),并创建testus-> shell-> open->层次结构,command然后在内部command更改要启动(Default)的路径.exe,如果要将参数传递给exe,则将路径包装到exe在""添加"%1"的样子:"c:\testing\test.exe" "%1" Internet Explorer(否Chrome或Firefox)并输入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();
}
}
}
希望这可以节省您一些时间。
我认为这已在MSDN中涵盖,请参阅“将应用程序注册到URL协议”。
MSDN链接很好,但是那里的安全信息还不完整。处理程序注册应包含“%1”,而不是%1。这是一种安全措施,因为某些URL源在调用自定义协议处理程序之前会错误地解码%20。
PS。您将获得整个URL,而不仅仅是URL参数。但是,除了已经提到的%20-> space转换之外,URL可能还会受到一些虐待。在您的URL语法设计中保持保守很有帮助。不要随意// //否则会陷入file://的混乱局面。