Как добавить веб-адрес в сведения о программе, отображаемые в панели управления - Программы по умолчанию
Я пишу программу, которая может обрабатывать протокол 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\""
Вот пример кликабельной ссылки для Проводника.
Вот мое приложение, которое не имеет ссылки
Это то, что я узнал до сих пор:
Не все приложения отображают эту ссылку.
Как Microsoft, так и сторонние приложения могут отображать эту ссылку, например, CyberLink PowerDVD отображает ссылку на www.cyberlink.com.
Не все приложения Microsoft отображают ссылку, а те, которые ее отображают, могут иметь разные URL-адреса. Например, три приложения корпорации Microsoft: Paint - без ссылки, Фотогалерея - http://www.microsoft.com/, Visual Studio 2013 - http://microsoft.com/ (без www).
Skype для рабочего стола показывает компанию Skype Technologies SA и ссылку на http://www.microsoft.com/.
Не похоже, что адрес ссылки хранится в Реестре. Он хранится в исполняемом файле, указанном в команде shell\open\.
Похоже, он не сохраняется как ресурс в исполняемом файле.
Инструмент строк из 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
После подписания исполняемого файла снова откройте "Программы по умолчанию" и щелкните свое приложение. Теперь должна отображаться ссылка на ваш сайт.