Найти почтовый клиент по умолчанию

используя C#, как определить, какая программа зарегистрирована как почтовый клиент по умолчанию? Мне не нужно запускать приложение, я просто хочу знать, что это такое.

5 ответов


используйте класс 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.

найдите строковое значение по умолчанию.