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

Как мне сделать это так mailto: ссылки будут зарегистрированы в моей программе?

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

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

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

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

3 ответа

Решение

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

Решение этого вопроса на самом деле не имеет значения, какой язык программирования вы используете, если есть какой-то способ изменить настройки реестра 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:user@example.com">Email me</a>

Будет выполнено следующее:
" Исполняемый файл вашей программы " "mailto:user@example.com"

Обновление (через комментарий от shellscape):
Начиная с 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, но я уверен, что там есть несколько библиотек редактирования реестра, которые вы можете использовать для изменения этого значения.

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

Вот официальное решение Microsoft для программного изменения почтового клиента по умолчанию. Это Visual Basic, но я надеюсь, что концепция ясна из этого:

http://support.microsoft.com/kb/299853

Другие вопросы по тегам