如何为 Windows 10 注册自定义协议?

LmT*_*oon 8 windows winapi protocols url-scheme

我想myscheme://foo通过我的应用程序像在任何浏览器中一样处理查询myscheme.exe。

据我了解,解决方案将取决于所使用操作系统的版本。对于旧操作系统(直到 Windows 7),只需将记录保存在注册表中:

HKEY_CLASSES_ROOT
  myscheme
  (Default) = "URL:Myscheme Protocol"
  URL Protocol = ""
  DefaultIcon
     (Default) = "myscheme.exe,1"
  shell
     open
        command
           (Default) = "C:\Program Files\Myscheme\myscheme.exe" "%1"
Run Code Online (Sandbox Code Playgroud)

不幸的是,将应用程序注册到 URI 方案声明这种方式已被弃用。我不应该再使用这个 API。页面上的推荐版本microsoft-edge(它不包含有关它的信息)!!!

于是,我开始研究它windows 8。我遇到了文件类型和 URI 关联模型,它说在Windows 8应用程序中不再能够以编程方式将自己设置为文件类型或 URI 的默认处理程序。据我所知,新架构使用通知系统,用户通过特殊提示控制默认应用程序。但是默认程序说它对 Windows 10 不再有效(探索参考已经死了!)。

那么,如何在 Windows 10 中正确处理自定义协议呢?不幸的是,Windows 的文档很糟糕。那么不同版本的操作系统呢?我应该对不同的版本使用不同的技术吗?

PS请不要将此问题标记为重复。其他问题,例如如何在 Windows 中注册自定义 URL 协议?,如何创建自己的 URL 协议?(例如:so://...)提出已弃用的解决方案。

对不起,我的英语不好。