如何注册自定义程序来处理Windows 7上的mailto协议

好的,这可能是我的系统有问题,但我很难让Windows 7识别我的自定义exe作为mailto协议的默认处理程序。

首先,我已经看到: 用编程方式注册Windows程序与mailto协议

接下来,我看到了这些:

  • 如何使用Windows“开始”菜单注册Internet浏览器或电子邮件客户端
  • 将应用程序注册到URL协议

我已经添加了什么似乎适当的registry项,但我仍然得到Windows Live Mail每次点击一个mailto链接(无论是在浏览器或通过运行窗口)。 我已经为所有用户和当前用户设置了registry项,但仍然无效。

当我去“默认程序”的应用程序,并向下滚动到mailto协议,我只看到Outlook和Windows Live Mail列出。 我的自定义应用程序甚至不出现。

我觉得这是Windows 7的特殊之处,或者是我的电脑。

我的自定义应用程序是一个WinForms .Net应用程序,但我不认为这很重要。

任何想法都非常受欢迎。

Solutions Collecting From Web of "如何注册自定义程序来处理Windows 7上的mailto协议"

在您的问题中引用的答案中描述的方式对于Windows 7来说似乎是其他操作系统的正确方法。

我想你使用64位版本的Windows 7,你的程序是32位应用程序。 因此,如果您的应用程序在HKEY_LOCAL_MACHINE\SOFTWARE\Classes\mailto\shell\open\command键中编写,它只会修改用于32位应用程序的键HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\mailto\shell\open\command 。 您可以在这里和这里阅读关于注册表虚拟化的更多信息。

如果是这种情况,您可以直接使用KEY_WOW64_64KEY标志直接调用本机Win32 API RegOpenKeyEx ,而在32位操作系统上该标志将被忽略。

虽然一个相当晚的答案,对我来说是这样的:在注册表中,这取代了其他答案中提到的注册表项:

HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\URLAssociations\MAILTO\Userchoice

看看这个页面: 默认Mailto注册表

我如何在Windows上添加一个自定义的URL处理程序。 像iTunes itms://相关,但不是。

这似乎是一个相当普遍的问题,非常高的书呆子级的背景。 作为一个书呆子,我被64和x86以及.net的伪通用二元方面的话语所吸引。 但是我的技术支持疑难解答人员不禁认为核心问题需要明确,系统地解决。

所以,不管邮件客户端(如你自己所说),而不管你的CPU如何,你真正的问题是你不能让你的邮件客户端成为mailto的默认协议处理程序。 或者为了使它非常简单,你不能让你喜欢的程序成为默认程序。

我倾向于认为问题的64/86方面是不相关的。 他们是有趣的,可能有一些效果,但如果程序运行的很好(没有问题,在该架构的代码等),如果它没有电子邮件就好(电子邮件发送和接收,所有的SMTP和IMAP所有那么我就怀疑操作系统是否正在密谋让客户端作为门廊狗的领导者。

如果有的话,我会说客户有自尊问题,并害怕成为邮件协议处理程序。 大多数客户不禁要问,如果应该是主要的,如果你说是的话,他们把这个词传递给其他应用程序和注册表。 他们确保每个人都知道他们是在房子里的新邮箱王。

所以,我会先尝试(基本的故障排除):安装另一个邮件客户端,看看是否有同样的问题。 如果是这样,你的操作系统是一个恶霸,你会想要探索这样的路线。

但是,如果这个其他客户端可以进入默认的程序俱乐部,并成为mailto处理程序,那么问题是与您的应用程序。 这是一个很大的懦弱,不知道如何正确地坚持自己。

但是像很多低调的玩家一样,等待一个很酷的孩子把他们带到他们的边缘(我的意思是Thunderbird,不要和其他客户打交道),你的应用可以站在第三方客户的肩上。

我们不得不假定,雷鸟至少做了一件,也许有两件事是你的应用程序没有做的。 第一个是把它的名字绑定到注册表中的协议上。 去捅一下,看看你能否找到他的名字,以及它如何与mailto协议相关联。 机会很好,你可以把自己的名字换成你的名字,或者至少也可以把协议交给你。

T-Bird可能做的第二件事是让自己进入“默认程序”列表(这是我不太喜欢的7个功能之一,因为它背后有一个很酷的概念 – 也就是让我们把应用程序组合起来而不是每次都等着看,如果其中一个人可以做一个类似的工作,但是Windows通过表现得像过度保护的父母那样把时间(大惊喜)搞砸了,并且在孩子们的聚会上露面,并且说:“我觉得这两个人应该在这个群体中,不是吗?

那么,我希望通过借用Thunderbird来访问mailto,你会被默认的程序俱乐部所接受,但是如果你不是,而且你仍然是mailto处理程序的话,我会把它写下来在试图解决这个问题之前,至少有一两个星期都会感到沮丧。

现在,如果Thunderbird无法控制邮件,我倾向于认为Windows 7实际上是放置了某种奇怪的种姓系统,应用程序和安装程序(例如用户)必须证明自己的价值通过搞清楚这个大秘密是怎么回事。

哦,如果所有其他都失败了,请尝试在没有联网的情况下以安全模式重新启动,在该环境中安装客户端并启动它。 当其他人处于假死状态时,看看你是不是默认的。 通过编写一个带有mailto的基本HTML页面来测试运行(显然没有网络),看看是否点击它打开你的客户端。

在正常模式下重新启动时,交叉手指。

让我知道,如果上述任何证明是最有帮助的。