windows - 设置 mailto : protocol handler programmatically in Windows 8

标签 windows windows-8 desktop-application mailto

在 Windows 8 之前,添加 mailto: 协议(protocol)处理程序的方法很简单(如此处所述 Register Windows program with the mailto protocol programmatically )

从 Windows 8 开始,旧方法不再有效。 Win8 似乎强制执行以下键:HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\URLAssociations\‌ MAILTO\UserChoice

所选应用的 ProgID 似乎也经过哈希处理,无法伪造,至少我无法判断。

有没有人对此有可行的方法,或者可以指出一个实用程序类/代码来概述如何以编程方式完成此操作?

对于代码,任何语言都可以。

编辑

我在其他讨论中被要求指定一个用例,所以我认为这对这个问题的上下文很有帮助。请考虑此屏幕截图 https://github.com/shellscape/Gmail-Notifier-Plus/raw/master/Promotional/prefs-account.png以及允许用户指定 mailto 处理的复选框。在这个用例中,没有人强制用户,用户可以控制并做出决定。虽然 Windows 8 商店应用程序(metro/modern)有一个可用的应用程序 list 条目,可以自动执行上述缺失的过程,但桌面应用程序似乎并不存在。

最佳答案

您可以将您的应用程序设置为由自定义协议(protocol)(如 mailto:)激活。当用户安装您的应用时,如果没有其他应用支持该协议(protocol),则不会提示他们,您会自动分配到该协议(protocol)。

但是,如果用户已经拥有处理该协议(protocol)的应用程序,则会提示他们提供支持该协议(protocol)的应用程序列表,并提供选择默认协议(protocol)的选项。您不能强制用户做出特定选择。

另外,如果用户点击了一个协议(protocol)(比如 myprotocol:)并且他们没有安装处理该协议(protocol)的应用程序,那么他们将被发送到商店(应用程序),商店会自动搜索支持该协议(protocol)的所有应用程序。用户然后安装他们想要的任何东西。您不能强制用户做出特定选择(如果有的话)。

我写了一篇关于协议(protocol)激活的文章。您可能会感兴趣:http://blog.jerrynixon.com/2012/10/walkthrough-using-windows-8-custom.html

关于windows - 设置 mailto : protocol handler programmatically in Windows 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14238446/

相关文章:

Java 从 Kerberos 票证收集用户信息

windows - Apache 无法在 wamp 中启动

windows - 如何使 COM 对象的方法不在主线程中运行

c# - 适用于 Windows 8 的简单数据库

c# - 在运行时动态更改 Win8 XAML 应用程序中的 ThemeResource/StaticResource 或其他?

node.js - Electron Framework 是否可以使用本地数据库文件?

java - 打包 Java 应用程序。 with/DB 在客户端机器上运行

Vi模式下的Windows终端/控制台/shell ?

c++ - MFC GUI 应用程序重写 - 线程、消息传递、文档/ View 等。需要建议

authentication - Windows 应用商店应用程序中的域用户身份验证?