Зарегистрировать программу 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, но я надеюсь, что концепция ясна из этого: