查找默认电子邮件客户

使用C#,如何确定将哪个程序注册为默认电子邮件客户端? 我不需要启动应用程序,我只是想知道它是什么。

使用Registry类搜索注册表。 这个控制台应用程序演示了原理

using System; using Microsoft.Win32; namespace RegistryTestApp { class Program { static void Main(string[] args) { object mailClient = Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail", "", "none"); Console.WriteLine(mailClient.ToString()); } } } 

您可以在注册表中查看以下键:

 HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail 

您可以从中读取此注册表项

 HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail 

默认电子邮件客户端取决于用户。 HKLM列出所有注册的电子邮件客户; 返回的第一个可能不是当前用户的默认值。 最好阅读HKEY_CURRENT_USER\Software\Clients\Mail

此外,这只会为您提供电子邮件应用程序的名称。 如果你想要它的可执行文件名,你必须继续使用类似的东西:

 object mailCommand = Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\" + mailClient.ToString() + @"\shell\open\command", "", "none"); 

然后从您不需要的命令行字符串中删除任何无关的内容(引号,参数)。

我认为您应该能够在HKLM\Software\Clients\Mail的注册表中找到该信息。

查找默认字符串值。