Найти почтовый клиент по умолчанию - PullRequest
6 голосов
/ 13 июля 2009

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

Ответы [ 5 ]

11 голосов
/ 13 июля 2009

Используйте класс 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());
      }
   }
}
8 голосов
/ 13 июля 2009

Вы можете посмотреть в реестре следующий ключ:

HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail
3 голосов
/ 27 августа 2013

Почтовый клиент по умолчанию зависит от пользователя. HKLM перечисляет все зарегистрированные почтовые клиенты; первый возвращенный может не быть текущим пользователем по умолчанию. Лучше читать HKEY_CURRENT_USER\Software\Clients\Mail.

Также это только дает вам имя приложения электронной почты. Если вам нужно имя исполняемого файла, вы должны продолжить что-то вроде:

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

и затем удалите все лишнее из строки командной строки, которая вам не нужна (кавычки, параметры).

3 голосов
/ 13 июля 2009

Вы можете прочитать этот раздел реестра из

HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail
1 голос
/ 13 июля 2009

Я думаю, вы сможете найти эту информацию в реестре на HKLM\Software\Clients\Mail.

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

...