Как добавить веб-адрес в сведения о программе, отображаемые в панели управления - Программы по умолчанию

Я пишу программу, которая может обрабатывать протокол mailto:. Чтобы пользователь мог выбрать мою программу в качестве обработчика электронной почты по умолчанию, я зарегистрировал свою программу. Однако я заметил, что некоторые программы отображают кликабельную ссылку на веб-сайт компании под названием компании, например File Explorer.

Как указать ссылку на мой веб-сайт, чтобы пользовательский интерфейс программ по умолчанию показывал ее, когда выбрано мое приложение?

Я использую Microsoft Visual Studio 2013 Ultimate. Вот мои регистрационные данные программы в формате.reg:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications]
"MyMail"="SOFTWARE\\MyFirm\\MyApp\\Capabilities"

[HKEY_LOCAL_MACHINE\SOFTWARE\MyFirm\MyApp\Capabilities]
"ApplicationDescription"="This is an awesome description."
"ApplicationName"="Awesome App"

[HKEY_LOCAL_MACHINE\SOFTWARE\MyFirm\MyApp\Capabilities\URLAssociations]
"mailto"="mailto.2"

[HKEY_CLASSES_ROOT\mailto.2]
@="URL:MailTo Protocol"
"EditFlags"=dword:00000002
"FriendlyTypeName"="My Mail Client"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\mailto.2\shell\open\command]
@="\"C:\\bg\\awesome.exe\" \"%l\""

Вот пример кликабельной ссылки для Проводника.Проводник

Вот мое приложение, которое не имеет ссылкиМое приложение - нет ссылки

Это то, что я узнал до сих пор:

  1. Не все приложения отображают эту ссылку.

  2. Как Microsoft, так и сторонние приложения могут отображать эту ссылку, например, CyberLink PowerDVD отображает ссылку на www.cyberlink.com.

  3. Не все приложения Microsoft отображают ссылку, а те, которые ее отображают, могут иметь разные URL-адреса. Например, три приложения корпорации Microsoft: Paint - без ссылки, Фотогалерея - http://www.microsoft.com/, Visual Studio 2013 - http://microsoft.com/ (без www).

  4. Skype для рабочего стола показывает компанию Skype Technologies SA и ссылку на http://www.microsoft.com/.

  5. Не похоже, что адрес ссылки хранится в Реестре. Он хранится в исполняемом файле, указанном в команде shell\open\.

  6. Похоже, он не сохраняется как ресурс в исполняемом файле.

  7. Инструмент строк из sysinternals не находит адрес ссылки в исполняемом файле.

1 ответ

Решение

URL-адрес, отображаемый под именем программы и компании в программах по умолчанию, хранится в цифровой подписи как атрибут authenticated 1.3.6.1.4.1.311.2.1.12.

Один из способов установить это значение - использовать signtool из командной строки Visual Studio. URL является значением после /du параметр, например:

signtool sign /s My /n "RegmagiK Software" /du "http://www.RegmagiK.com" awesome.exe 

Сертификат должен быть подписан доверенным центром сертификации.

Для тестирования можно создать самозаверяющий сертификат с помощью инструмента makecert и сделать его доверенным с помощью диспетчера сертификатов.

makecert -r -ss My -sr CurrentUser -n "CN=RegmagiK Software" SelfSigned.cer
certmgr.exe /add SelfSigned.cer /s /r currentUser root

После подписания исполняемого файла снова откройте "Программы по умолчанию" и щелкните свое приложение. Теперь должна отображаться ссылка на ваш сайт.Правильно подписанный исполняемый файл имеет ссылку

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