首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >注册表中的默认电子邮件客户端究竟是如何设置的,又是在哪里设置的?

注册表中的默认电子邮件客户端究竟是如何设置的,又是在哪里设置的?
EN

Stack Overflow用户
提问于 2010-10-15 15:43:56
回答 2查看 20.8K关注 0票数 9

为了找出默认的电子邮件客户端是什么,我一遍又一遍地找到了相同的信息:查看HKLM\Software\Clients\Mail中的默认字符串。(例如,请参阅此related question)

然而,这似乎并不适用于所有的操作系统和/或情况:我有两台运行Win7 64位的机器,让我们称它们为A和B。A安装了Outlook2010 64位和Thunderbird 3 32位。B安装了Outlook 2007 32位和Thunderbird 3 32位。A和B都将Thunderbird设置为其默认邮件客户端。

然而,注册表的状态并不像我预期的那样:

在机器A上,HKLM\Software\Clients\MailHKLM\Software\Wow6432Node\Clients\Mail都有一个空字符串作为默认字符串值。在B上,这两个键都包含Microsoft Outlook作为缺省字符串值,这显然是错误的。进一步的调查显示,在两台机器上似乎都将正确的值写入了HKCU\Software\Clients\Mail

我希望我的应用程序能够正确地处理所有情况。这有点道理,Win7现在似乎为每个用户持有一个单独的默认邮件客户端,但它似乎相当不一致。当查看指向HKLM\Software\Clients\Mail的大量信息时,似乎很明显,以前版本的Windows以不同的方式处理此问题,并且总是写入该位置。那么这种情况是什么时候改变的呢?机器B上的错误值有什么意义吗?如果不是,为什么一开始就写在那里呢?在同一台计算机上混合使用64位和32位电子邮件客户端会有什么改变吗?

如果有人愿意分享解释这个主题的可靠信息或文档,我将不胜感激!也许有一个Win32 API函数可以返回正确的值?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-15 16:05:22

这篇MSDN文章对你有帮助吗?

How to Register an Internet Browser or E-mail Client With the Windows Start Menu

对于控制台用户,在HKEY_CURRENT_USER子树中进行的

注册比在HKEY_LOCAL_MACHINE中进行的相应注册具有更高的优先级。对于系统上的新用户,将使用存储在HKEY_LOCAL_MACHINE中的设置。

对于Windows XP,有一篇特别的文章:How to modify the default Web browser and e-mail client programmatically in Windows XPHow to implement a per-user default mail client in Windows XP?

很抱歉,无法使用Win32接口帮助您。

票数 11
EN

Stack Overflow用户

发布于 2017-11-08 18:23:46

对于Windows10,这似乎是不同的-请参阅此处的讨论:https://superuser.com/q/1045349/176339

引用papo答案中的相关段落来回答您的问题:

mailto协议的

注册表项在HKLM\SOFTWARE\Classes\mailto下,与其他类一样,它们可以被HKCU\SOFTWARE\Classes\mailto下的CURRENT_USER项覆盖,但在最近的Windows版本中有更改,现在注册表中有更多的位置将进一步覆盖类中的外壳关联。此外,对于mailto,它们是强制的,因此使mailto的类值变得无用。紧随其后的是Key:HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\mailto,它又被:HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\Roaming\OpenWith\UrlAssociations\mailto覆盖,只有当它没有被:HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\Shell\Associations\UrlAssociations\mailto覆盖时才会使用它

干得好微软:)这些键下的值具有相同的格式,一个带有ProgId值名称的键UserChoice指向来自类的外壳关联键。但是您几乎可以忘记编辑这些值,因为还有Hash值。这是一种防止这种注册表编辑的保护。用户必须至少单击自己一次,才能在标准的Windows打开对话框弹出窗口中选择一个应用程序,如果他还选中了Always选项,则会生成哈希值,并且会记住该选择并将其写入上面列表中的最后两个键。另一种选择是使用上图所示的设置。它是对恶意应用程序、病毒和糟糕的编程应用程序的一种保护。

要解决默认邮件发送关联的问题,您可以从所有这些位置( LOCAL_MACHINE除外)下删除邮件发送密钥。Windows将在下次使用mailto协议时重新创建它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3940358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档