如何在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://的混乱局面。