Зарегистрируйте программу Windows с протоколом mailto программно

Как сделать так, чтобы mailto: ссылки регистрировались в моей программе?

Как бы я тогда обработал это событие в своей программе?

Большинство решений, которые я нашел при быстром поиске в Google, касаются того, как сделать это вручную, но мне нужно делать это автоматически для пользователей моей программы, если они нажимают кнопку, например «установить как почтовый клиент по умолчанию».

Редактировать:

Удалена ссылка на Delphi, потому что ответ не зависит от вашего языка.

Ответов (2)

Решение

@ Dillie-O: Ваш ответ направил меня в правильном направлении (я ожидал, что это просто изменение реестра), и у меня все заработало. Но я собираюсь отметить это как ответ, потому что я собираюсь добавить дополнительную информацию, которую я нашел во время работы над этим.

Решение этого вопроса действительно не зависит от того, какой язык программирования вы используете, если есть способ изменить настройки реестра Windows.

Наконец, вот ответ:

  • Чтобы связать программу с протоколом mailto для всех пользователей на компьютере, измените значение HKEY_CLASSES_ROOT \ mailto \ shell \ open \ command по умолчанию на:
    Исполняемый файл вашей программы » «% 1»
  • Чтобы связать программу с протоколом mailto для текущего пользователя , измените значение HKEY_CURRENT_USER \ Software \ Classes \ mailto \ shell \ open \ command по умолчанию на:
    Исполняемый файл вашей программы » «% 1»

% 1 будет заменен на весь URL-адрес mailto. Например, по ссылке:

<a href="mailto:[email protected]">Email me</a>

Будет выполнено следующее:
" Исполняемый файл вашей программы " "mailto: [email protected]"

Обновление (через комментарий оболочки):
в Windows 8 этот метод больше не работает должным образом . Win8 применяет следующий ключ: HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ Shell \ Associati ons \ URLAssociations \ ‌ MAILTO \ UserChoice, для которого ProgID выбранного приложения хешируется и не может быть подделан. Это королевская ПИТА.

Из того, что я видел, есть несколько ключей реестра, которые устанавливают почтовый клиент по умолчанию. Один из них является:

Системный ключ: [HKEY_CLASSES_ROOT\mailto\shell\open\command]

Имя значения: (Default)

Тип данных: REG_SZ (строковое значение)

Значение: Mail program command-line .

Я не знаком Delphi 7, но уверен, что там есть несколько библиотек редактирования реестра, которые вы можете использовать для изменения этого значения.

В некоторых местах указано больше, чем этот ключ , в других - только этот ключ, поэтому вам может потребоваться немного протестировать, чтобы найти правильный (-ые).