Настройка mailto: обработчик протокола программно в Windows 8
До Windows 8 метод добавления mailto:
обработчик протокола был простым (как описано здесь. Зарегистрируйте программу Windows с протоколом mailto программно)
Начиная с Windows 8, старый метод больше не работает. Казалось бы, в Win8 используется следующий ключ: HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\URLAssociations\MAILTO\UserChoice
,
Также появляется ProgID
выбранного приложения хэшируется и не может быть подделан, по крайней мере, я не могу сказать.
У кого-нибудь есть рабочий метод для этого, или можете указать мне на служебный класс / код, который расскажет, как сделать это программно?
Для кода подойдет любой язык.
редактировать
Из других обсуждений меня попросили указать вариант использования, поэтому я думаю, что это будет полезно в контексте этого вопроса. Пожалуйста, рассмотрите этот снимок экрана https://github.com/shellscape/Gmail-Notifier-Plus/raw/master/Promotional/prefs-account.png и флажок, позволяющий пользователю указать обработку почты. В этом сценарии использования никто не принуждает пользователя, пользователь контролирует и принимает решение. В то время как приложения магазина Windows 8 (метро / современные) имеют доступную запись манифеста приложения, которая автоматизирует отсутствующий процесс, описанный выше, похоже, что для настольных приложений ничего не существует
4 ответа
Вы можете настроить активацию своего приложения по специальному протоколу (например, mailto:). Когда пользователь устанавливает ваше приложение, и если нет другого приложения, поддерживающего этот протокол, они не запрашиваются, и вы автоматически назначаетесь этому протоколу.
Однако, если у пользователя уже есть приложение, которое обрабатывает этот протокол, ему будет предложен список приложений, поддерживающих этот протокол, с возможностью выбрать значение по умолчанию. Вы не можете заставить пользователя сделать определенный выбор.
Кроме того, если пользователь нажимает на протокол (например, myprotocol:), и у него не установлено приложение, которое обрабатывает этот протокол, то оно будет отправлено в хранилище (приложение), которое автоматически ищет все приложения, поддерживающие этот протокол. Затем пользователь устанавливает все, что хочет. Вы не можете заставить пользователя сделать определенный выбор (если он вообще есть).
Я написал статью об активации протокола. Это может быть вам интересно: http://blog.jerrynixon.com/2012/10/walkthrough-using-windows-8-custom.html
Это как установить mailto протокол вручную и просто в Windows 8, 8.1, 2012, 2012R2
Добавить новую ветку реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\mailto\UserChoice
Затем нажмите любой mailto:
ссылка в вашем веб-браузере, скажем IE и, наконец, там в списке программ для вас, чтобы выбрать, который не был доступен ранее.
Также MAILTO появляется в Панели управления \ Все элементы панели управления \ Программы по умолчанию. Там нет другого варианта, чтобы добавить / удалить протокол оттуда.
Итак, сегодня я сделал Desktop Firefox моим стандартным обработчиком mailto в Windows 8, добавив строковое значение "mailto" в HKCU\Software\Clients\StartMenuInternet\FIREFOX.EXE\Capabilities\URLAssociations и установив значение "mailto", равное ProgID или "FirefoxURL". Затем я удалил ключи по адресу HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\URLAssociations\ MAILTO\UserChoice, чтобы позволить мне снова выбрать клиента по умолчанию, и на этот раз Firefox был доступен для меня.
Похоже, суть этого вопроса заключается в том, что нельзя использовать клиент по умолчанию для какого-либо протокола (после Windows 8). Пользователь должен выбрать. Однако, если вы хотите нарушить соглашение об ОС, вы можете перехватить вызов, чтобы создать диалоговое окно выбора по умолчанию, которое потребует усилий, усилий и будет лишь временным ударом и потребует "взлома" ОС, или вы можете отправить двойной щелкните в диалоговом окне, чтобы выбрать для пользователя, предполагая, что ваша программа имеет повышенные права, чтобы она могла отправлять клики в окна администратора. Вероятно, это будет самый простой способ, пользователь никогда не узнает, что произошло, просто быстрая вспышка. Однако, действительно, после регистрации себя в качестве обработчика протокола, я не думаю, что какая-либо программа должна выходить за рамки удаления записи реестра обработчика протокола по умолчанию, тем самым вынуждая пользователя выбирать заново.
В Windows 8 ваше приложение больше не может напрямую связываться с файловыми ассоциациями. Здесь приведены рекомендации по обработке как для Магазина Windows, так и для настольных приложений: http://msdn.microsoft.com/en-us/library/windows/apps/hh700321.aspx