Найти почтовый клиент по умолчанию
используя 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());
}
}
}
почтовый клиент по умолчанию зависит от пользователя. 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
.
найдите строковое значение по умолчанию.