Find default email client

2019-02-22 02:42发布

问题:

Using C#, how can I determine which program is registered as the default email client? I don't need to launch the app, I just want to know what it is.

回答1:

Use the Registry class to search the registry. This console app demonstrates the principle.

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:

You can look in the registry on the following key:

HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail


回答3:

You can read this registry key from

HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail


回答4:

Default email client depends on the user. HKLM lists all registered email clients; the first one returned may not be the current user's default. Better to read HKEY_CURRENT_USER\Software\Clients\Mail.

Also this only gives you the name of the email application. If you want its executable file name, you have to go on with something like:

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

and then remove anything extraneous from the command-line string that you don't need (quotes, parameters).



回答5:

I think you should be able to find that info in the registry at HKLM\Software\Clients\Mail.

Look for the default string value.