C# 如何创建一个WPF应用程序来处理Windows 10中的URL:callto和URL:tel协议?

C# 如何创建一个WPF应用程序来处理Windows 10中的URL:callto和URL:tel协议?,c#,wpf,windows-10,protocols,C#,Wpf,Windows 10,Protocols,我的任务是创建一个WPF应用程序,当用户在浏览器(Chome,IE)中单击callto:和tel:链接时,打开它们的默认应用程序是我创建的Windows 10 WPF应用程序,并处理它们 我尝试通过编写脚本和手动输入Visual Studio输出的已发布.exe的路径来更改注册表,但这两种方法都不起作用。每当我单击callto:或tel:链接时,打开的默认程序仍然是voip应用程序,如Skype 我已将[HKEY\U CLASSES\U ROOT\tel\shell\open\command]和

我的任务是创建一个WPF应用程序,当用户在浏览器(Chome,IE)中单击callto:和tel:链接时,打开它们的默认应用程序是我创建的Windows 10 WPF应用程序,并处理它们

我尝试通过编写脚本和手动输入Visual Studio输出的已发布.exe的路径来更改注册表,但这两种方法都不起作用。每当我单击callto:或tel:链接时,打开的默认程序仍然是voip应用程序,如Skype

我已将
[HKEY\U CLASSES\U ROOT\tel\shell\open\command]
计算机\HKEY\U CLASSES\U ROOT\callto\shell\open\command
更改为
“C:\App\bin\Release\App.publish\App.exe”-C“call\%1”
(这是我程序的.exe)

我希望浏览器提示我打开应用程序。

您是否阅读过,其中解释了如何注册为快捷方式的使用者

要注册应用程序以处理特定的URI方案,请向HKEY_CLASSES_根添加一个新键以及相应的子键和值。根密钥必须与正在添加的URI方案匹配。例如,要添加“警报:”方案,请将警报键添加到HKEY_CLASSES_ROOT,如下所示:

在这个新键下,URL协议字符串值表示这个键声明了一个自定义的可插拔协议处理程序。没有此键,处理程序应用程序将无法启动。该值应为空字符串

还应为DefaultIcon和shell添加键。DefaultIcon键的默认字符串值必须是用作此新URI方案图标的文件名。字符串的形式为“path,iconindex”,最大长度为MAX_path。shell键下的第一个键的名称应该是动作动词,例如open。在此键下,命令键或DDEEXEC键指示应如何调用处理程序。命令和DDEXEC键下的值描述了如何启动处理新协议的应用程序

最后,默认字符串值应该包含新URI方案的显示名称。以下示例显示了如何注册应用程序alert.exe(在本例中为alert.exe)以处理警报方案

当用户单击包含自定义URI方案的链接时,Windows Internet Explorer将启动为该URI方案注册的可插入协议处理程序。如果在注册表中指定的open命令包含%1参数,Internet Explorer会将URI传递给已注册的可插拔协议处理程序应用程序


如果我不正确,请原谅,这不是注册自定义协议的链接吗?我没有试图注册自定义协议;它们已经存在(电话、呼叫)。我已经更改了shell命令以匹配文章中的内容,但它没有按预期工作。传递给您的程序的第一个参数类似于
tel:12345678
非常感谢,我参与了其中,我现在可以启动应用程序并解析tel:link。不幸的是,我仍然需要更多来完成我的要求。我需要能够在当前应用程序中打开链接并对其进行解析(例如,可以通过在web浏览器中单击进行解析)。您是否尝试在任何应用程序中或仅在web浏览器中执行此操作?我创建了一个自定义WPF应用程序来使用这些链接,我单击的链接肯定会在web浏览器中
HKEY_CLASSES_ROOT
    alert
        URL Protocol = ""
HKEY_CLASSES_ROOT
 alert
    (Default) = "URL:Alert Protocol"
      URL Protocol = ""
    DefaultIcon
      (Default) = "alert.exe,1"
    shell
      open
         command
            (Default) = "C:\Program Files\Alert\alert.exe" "%1"