【问题标题】:Find default email client查找默认电子邮件客户端
【发布时间】:2017-02-16 21:53:16
【问题描述】:

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

【问题讨论】:

    标签: c# .net email email-client


    【解决方案1】:

    使用 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());
          }
       }
    }
    

    【讨论】:

    • 默认电子邮件客户端是按用户策略。我同意下面威廉·帕克的回答。
    • 有没有办法启动应用程序?
    【解决方案2】:

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

    HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail
    

    【讨论】:

      【解决方案3】:

      您可以从

      中读取此注册表项
      HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail
      

      【讨论】:

        【解决方案4】:

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

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

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

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

        【讨论】:

          【解决方案5】:

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

          查找默认字符串值。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-10-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多