在Windows 8之前,添加mailto:协议处理程序的方法很简单(如此处所述,以编程方式使用mailto协议注册Windows程序

从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)有一个可用的应用程序清单条目,可以自动执行上述丢失的过程,但桌面应用程序似乎不存在任何内容。

===============>>#1 票数:5

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

但是,如果用户已有一个处理该协议的应用程序,则会提示他们提供支持该协议的应用程序列表,并选择默认选项。 您无法强制用户进行特定选择。

此外,如果用户点击协议(如myprotocol :)并且他们没有安装处理该协议的应用程序,那么他们将被发送到商店(app),该商店会自动搜索支持该协议的所有应用程序。 然后用户安装他们想要的任何东西。 您无法强制用户进行特定选择(如果有的话)。

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

===============>>#2 票数:1

因此,我通过将字符串值“mailto”添加到HKCU \\ Software \\ Clients \\ StartMenuInternet \\ FIREFOX.EXE \\ Capabilities \\ URLAssociations并将“mailto”的值设置为等于,将Windows Firefox作为Windows 8中的默认mailto处理程序。 ProgID或“FirefoxURL”。 然后我删除了HKEY_CURRENT_USER \\ Software \\ Microsoft \\ Windows \\ Shell \\ Associations \\ URLAssociations \\ MAILTO \\ UserChoice中的键,以允许我再次选择默认客户端,这次Firefox可供我选择。

这个问题的本质似乎是不能再接管任何协议的默认客户端(发布Windows 8)。 用户必须选择。 但是,如果你想打破操作系统惯例你可以挂钩调用来创建选择默认对话框,这将需要研究,努力,并且只是一个临时的kludge并且需要“打破”操作系统,或者你可以发送一个双单击该对话框为用户选择,假设您的程序具有提升的权限,以便它可以向管理员窗口发送单击。 这可能是最简单的方法,用户永远不会知道发生了什么,只是一个快速的闪光。 实际上,在将自己注册为协议处理程序之后,我认为任何程序都不应该超越删除默认协议处理程序注册表项,从而迫使用户重新选择。

===============>>#3 票数:0

您不能让您的应用程序在Windows 8中直接接管文件关联。有关如何在Windows Store和桌面应用程序中处理此问题的指南: http//msdn.microsoft.com/en-us/library/窗口/应用/ hh700321.aspx

===============>>#4 票数:0

这是在Windows 8,8.1,2012,2012R2中手动和简单地设置mailto协议的方法

添加新的注册表分支HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\mailto\\UserChoice

然后单击任何mailto:链接在您的Web浏览器中,说IE,最后在程序列表中,您可以选择之前不可用的。

此外,MAILTO现在出现在控制面板\\所有控制面板项目\\默认程序中。 没有其他选项可以从那里添加/删除协议。

  ask by shellscape translate from so

未解决问题?本站智能推荐: