Как и где точно устанавливается почтовый клиент по умолчанию в реестре? - PullRequest
8 голосов
/ 15 октября 2010

Чтобы узнать, что такое почтовый клиент по умолчанию, я снова и снова находил одну и ту же информацию: посмотрите на строку по умолчанию в HKLM\Software\Clients\Mail. (см., например, этот связанный вопрос )

Однако, похоже, что это не так для всех ОС и / или ситуаций: У меня есть две машины под управлением Win7 64bit, назовем их A и B. A имеет Outlook 2010 64bit и Thunderbird 3 32bit. В B установлен Outlook 2007 32bit и Thunderbird 3 32bit. И A, и B имеют Thunderbird в качестве почтового клиента по умолчанию.

Однако состояние реестра не такое, как я ожидал:

На машине A, оба HKLM\Software\Clients\Mail и HKLM\Software\Wow6432Node\Clients\Mail имеют пустую строку в качестве значения строки по умолчанию. На B оба эти ключа содержат Microsoft Outlook в качестве строкового значения по умолчанию, что явно неверно. Дальнейшее расследование показало, что правильное значение, похоже, записано в HKCU\Software\Clients\Mail на обеих машинах.

Я хочу, чтобы мое приложение обрабатывало это правильно во всех случаях. Имеет смысл, что теперь Win7, похоже, содержит отдельный почтовый клиент по умолчанию для каждого пользователя, но это выглядит довольно противоречиво. При взгляде на множество информации, указывающей на HKLM\Software\Clients\Mail, кажется очевидным, что предыдущие версии Windows обрабатывали это по-разному и всегда писали в это место. Итак, когда это изменилось? Имеет ли неправильное значение на машине B какое-либо значение? Если нет, то почему это там написано? Меняет ли что-нибудь сочетание 64-битных и 32-битных почтовых клиентов на одном компьютере?

Я был бы очень признателен, если бы кто-нибудь поделился достоверной информацией или документацией, объясняющей эту тему! Может быть, есть функция Win32 API, которая возвращает правильное значение?

Ответы [ 2 ]

11 голосов
/ 15 октября 2010

Поможет ли вам эта статья MSDN?

Как зарегистрировать интернет-браузер или почтовый клиент в меню «Пуск» Windows

Регистрации, сделанные в поддереве HKEY_CURRENT_USER, имеют более высокий приоритет для пользователя консоли, чем соответствующие регистрации, сделанные в HKEY_LOCAL_MACHINE. Для новых пользователей в системе используются настройки, сохраненные в HKEY_LOCAL_MACHINE.

Для Windows XP специальная статья: Как программно изменить веб-браузер и почтовый клиент по умолчанию в Windows XP и Как реализовать почтовый клиент по умолчанию для пользователя в Windows XP?

Извините, я не могу помочь вам с Win32 API.

1 голос
/ 08 ноября 2017

Для Windows 10 это выглядит по-другому - см. Обсуждение здесь: https://superuser.com/q/1045349/176339

Цитируя соответствующий абзац для вашего вопроса, из ответа papo :

Записи реестра для протокола mailto находятся в HKLM \ SOFTWARE \ Classes \ mailto , и, как и в случае с другими классами, они могут быть переопределены записями для CURRENT_USER в HKCU \ SOFTWARE \ Classes \ mailto НО В последних версиях Windows произошли изменения, и теперь в реестре появилось больше мест, которые будут переопределять ассоциации оболочек из классов.Более того, в случае mailto они являются обязательными и поэтому делают значения Classes для mailto бесполезными.Следующим по важности является ключ: [HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts \ mailto] , который, в свою очередь, переопределяется: [HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \Роуминг \ OpenWith \ UrlAssociations \ mailto] , который также используется, только если он не переопределяется: [HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ Shell \ Associations \ UrlAssociations \ mailto]

ХОРОШАЯ РАБОТА Microsoft :) Значения в этих ключах имеют одинаковый формат: ключ UserChoice с значением ProgId, указывающим на ключ ассоциации оболочки из классов.Но вы можете почти забыть о редактировании этих значений, так как здесь также есть значение Hash.Это защита от таких изменений реестра.Пользователь ДОЛЖЕН щелкнуть себя хотя бы один раз, чтобы выбрать приложение в стандартном всплывающем диалоговом окне Windows «Открыть с помощью». Если он также выберет параметр «Всегда», будет сгенерировано значение хэша, и выбор будет запомнен и записан в последние два ключа из списка выше.Другой вариант - использовать настройки, как показано на рисунке выше.Это защита от вредоносных приложений, вирусов и плохо запрограммированных приложений.

Чтобы устранить проблему, связанную с сопоставлением почты по умолчанию, вы можете удалить ключи mailto из всех этих местоположений, кроме LOCAL_MACHINE.Windows создаст их заново при следующем использовании протокола mailto.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...