Как зарегистрировать пользовательскую программу для обработки протокола mailto в Windows 7 - PullRequest
4 голосов
/ 18 августа 2011

ОК, это может быть проблема с моей системой, но мне очень трудно заставить Windows 7 распознавать мой пользовательский exe-файл как обработчик по умолчанию для протокола mailto.

Во-первых, я видел это: Программно зарегистрировать программу Windows с протоколом mailto

Далее, я видел это:

Я добавил то, что казалось подходящими записями реестра, но я все еще получаю Windows Live Mail, появляющуюся каждый раз, когда я нажимаю ссылку mailto (в браузере или в окне Run). Я установил записи реестра для всех пользователей и для текущего пользователя, но он не работает.

Когда я захожу в приложение «Программы по умолчанию» и прокручиваю вниз до протокола mailto, я вижу только Outlook и Windows Live Mail в списке. Мое пользовательское приложение даже не появляется.

Я полагаю, что это что-то особенное в Windows 7 или что-то в моем компьютере.

Мое пользовательское приложение - приложение WinForms .Net, но я не думаю, что это имеет значение.

Любые идеи приветствуются.

Ответы [ 4 ]

2 голосов
/ 18 августа 2011

Способ, описанный в ответе , на который вы ссылались в своем вопросе, кажется правильным для Windows 7, как и для других операционных систем.

Я полагаю, что вы используете 64-битную версию Windows 7, а ваша программа - 32-битное приложение. Поэтому, если ваше приложение пишет в ключе HKEY_LOCAL_MACHINE\SOFTWARE\Classes\mailto\shell\open\command, оно изменяет только ключ HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\mailto\shell\open\command, используемый для 32-битных приложений. Вы можете прочитать больше о виртуализации реестра здесь и здесь .

Если это ваш случай, вы можете напрямую вызвать собственный API Win32 RegOpenKeyEx с флагом KEY_WOW64_64KEY , который будет игнорироваться в 32-битной операционной системе.

1 голос
/ 06 мая 2015

Хотя довольно поздний ответ, для меня это сработало: на regedit это заменяет ключи реестра, упомянутые в других ответах:

HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\URLAssociations\MAILTO\Userchoice

Посмотрите на эту страницу: Mailto Registry по умолчанию

0 голосов
/ 28 сентября 2011

Это похоже на контекст очень высокого уровня для довольно распространенной проблемы. Как ботаник, я захвачен рассуждениями о 64 против x86 и псевдоуниверсальных бинарных аспектах .net. Но специалист по технической поддержке не может не думать о том, что основная проблема должна быть понятной и систематически решаться ...

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

Я склонен думать, что 64/86 аспекты проблемы не актуальны. Они интересны и, возможно, имеют некоторый эффект, но если программа работает нормально (нет проблем с кодом в этой архитектуре и т. Д.), И если она отлично работает с электронной почтой (электронные письма отправляются и принимаются, все SMTP и IMAP все кстати), тогда я сомневаюсь, что ОС замышляет помешать клиенту занять пост лидера собак подъезда.

Во всяком случае, я бы сказал, что у клиента проблемы с самооценкой и он боится быть обработчиком протокола mailto. Большинство клиентов не могут удержаться, спрашивая, должно ли быть основным, и если вы говорите «да», они передают слово другим приложениям и реестру. Они удостоверяются, что все знают, что они - новый король Почтового ящика в доме.

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

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

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

Мы должны предположить, что Thunderbird сделал, по крайней мере, одну и, возможно, две вещи, которые ваше приложение не сделало. Первым было привязать его имя к протоколу в реестре. Пойдите и посмотрите, сможете ли вы найти его имя и как оно связано с протоколом mailto. Скорее всего, вы можете поменять его имя на свое или, по крайней мере, попытаться прикрепить протокол к вам.

Второе, что мог сделать T-Bird, - это включить себя в список «Программы по умолчанию» (особенность 7, которая мне не очень понравилась, потому что у нее была классная концепция - например, давайте сгруппируемся). приложения вместе, а не ждать и каждый раз видеть, может ли одно из них выполнить аналогичную работу, но Windows затеяла это хорошее время (большой сюрприз), действуя как чрезмерно защищающий родитель, и всегда появляется на детской вечеринке и говоря "Я думаю, что эти двое должны быть в этой группе, не так ли?"

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

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

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

Затем скрестите пальцы при запуске в обычном режиме.

Дайте мне знать, если что-либо из вышеперечисленного оказалось наименее полезным.

0 голосов
/ 18 августа 2011
...