6

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

4

5 回答 5

11

使用 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());
      }
   }
}
于 2009-07-13T14:43:21.523 回答
8

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

HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail
于 2009-07-13T14:26:44.983 回答
3

您可以从

HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail
于 2009-07-13T14:27:56.667 回答
3

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

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

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

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

于 2013-08-27T17:21:38.173 回答
1

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

查找默认字符串值。

于 2009-07-13T14:28:42.627 回答