使用C#代码检查默认邮件客户端

使用C#代码检查默认邮件客户端,c#,C#,如何使用C#查找默认邮件客户端?我查了一些贴在这里的东西,但对我没有帮助 我用了这个密码 object mailClient = Microsoft.Win32.Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail", "", "none"); 在我的计算机上同时安装了windows live mail和outlook,并且defualt客户端是windows live mail,但是,如果打印mailclient,它将显示d

如何使用C#查找默认邮件客户端?我查了一些贴在这里的东西,但对我没有帮助

我用了这个密码

object mailClient = Microsoft.Win32.Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail", "", "none");
在我的计算机上同时安装了windows live mail和outlook,并且defualt客户端是windows live mail,但是,如果打印mailclient,它将显示defualt mail客户端为outlook

但是如果我使用
System.Diagnostics.Process.Start(“mailto:”)
,那么它将在windows live mail中打开,这是正确的

我需要一种方法通过C代码找到解除故障的客户端…

注册表项是:

机器:
HKEY\U CLASSES\U ROOT\mailto\shell\open\command

用户:
HKEY\U CURRENT\U User\Software\Classes\mailto\shell\open\command

这些键的值是执行的命令行,它们包含
mailto:
后面地址的
%1
。因此,您可能需要进行一些额外的解析,以获得可执行文件的路径:


示例:
“C:\PROGRA~2\MICROS~4\Office14\OUTLOOK.EXE”-C IPM.Note/m“%1”
只需变成
“C:\PROGRA~2\MICROS~4\Office14\OUTLOOK.EXE”
若要打开一封“to”已填好的邮件,请尝试

string target = "joe.doe@doecontry.dc";

string mailtoCommand =
    (string) Registry.GetValue(@"HKEY_CURRENT_USER\Software\Classes\mailto\shell\open\command", @"", @"none");
mailtoCommand = mailtoCommand.Replace("\"", string.Empty).Replace("%1", target);

string arguments =
    mailtoCommand.Substring(mailtoCommand.ToLower().IndexOf(@".exe", StringComparison.Ordinal) + 4);

string fileName = mailtoCommand.Substring(0, mailtoCommand.Length - arguments.Length);

Process.Start(fileName, arguments);