Получение браузера по умолчанию - PullRequest
7 голосов
/ 09 апреля 2009

Как определить программный браузер по умолчанию в моей системе. Код должен быть разработан с использованием vc ++ Есть ли API для этого?

Где в реестре хранится значение браузера по умолчанию?

Ответы [ 5 ]

9 голосов
/ 10 апреля 2009

Обычно вам не нужно это знать. ShellExecute(0,0,"http://stackoverflow.com",0,0,SW_SHOWNORMAL); сделает свое дело. Windows обнаружит http: // и выяснит, что вы хотите открыть URL. Веб-браузер «по умолчанию» в значительной степени определяется как веб-браузер, используемый Windows для этой задачи.

Поддерживается не только http: //. ShellExecute также может запустить веб-браузер по умолчанию с URL-адресами https: //. Для mailto: URL-адресов запускается почтовый клиент по умолчанию.

9 голосов
/ 09 апреля 2009

вы можете найти браузер по умолчанию в реестре

т.е. для Windows XP и Vista находится по адресу

HKEY_LOCAL_MACHINE\Software\Clients\StartMenuInternet\
8 голосов
/ 09 августа 2012

TL; DR: если существует HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\, прочитайте это; в противном случае читать HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\.

Прочитав ответы здесь, я нашел небольшое понимание того, как определить браузер по умолчанию, поэтому я провел несколько экспериментов и исследований, чтобы выяснить это. Я скачал исходный код Firefox, написал скрипт, который читает кучу записей реестра, а также запустил Process Explorer, все время меняя браузер по умолчанию.

Я обнаружил, что существует множество разделов реестра, которые Firefox и Chrome изменяют, когда каждый из них устанавливает себя в качестве браузера по умолчанию. Я считаю, что Safari и Opera похожи по поведению. IE, кажется, изменяет только один из ключей реестра, которые я смотрел.

Я обнаружил, что, хотя большинство браузеров изменяют другие пути реестра, все браузеры меняют HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\ (default)

Вот значение реестра из раздела реестра HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\ (default), в то время как каждый браузер является браузером по умолчанию.

  • IE 9.0.8112.16421: IEXPLORE.EXE
  • Хром 21.0.1180.60 м: Google Chrome
  • Firefox 10.0.2: FIREFOX.EXE
  • Safari 3.2.2: Safari.exe
  • Опера 12.01: Opera

Протестировано на Microsoft Windows 7 Home Premium SP1 64-битная

Edit:

Я нашел на новой установке Windows XP SP3 HKEY_CURRENT_USER\SOFTWARE\Clients\StartMenuInternet\ не существует. В этом случае вы должны прочитать браузер по умолчанию с HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\. Я подозреваю, что это также относится к новым установкам других версий Windows.

Приложение:

Метод ShellExecute - отличное решение, если все, что вам нужно, это открыть веб-страницу в браузере по умолчанию. Однако, если вы хотите, например, установить расширение только в браузере по умолчанию, ShellExecute не решит проблему.

2 голосов
/ 09 августа 2012

Как следует из названия, StartMenuInternet предназначен для регистрации веб-браузера в меню «Пуск» (и это применимо только к XP и Vista, не рекомендуется для Windows 7). Это не обязательно устанавливает браузер в качестве браузера по умолчанию для всей системы. Существует множество способов регистрации браузера для различных целей (загрузка файла, загрузка URL-адреса, загрузка данных на основе типа MIME и т. Д.). Каждая из этих регистраций является отдельной.

Программы по умолчанию

Как зарегистрировать интернет-браузер или почтовый клиент в меню «Пуск» Windows

Регистрация приложения по протоколу URL

Типы файлов

Лично я бы, вероятно, посмотрел на регистрацию обработчика URL «http» и / или «https», чтобы определить браузер по умолчанию, поскольку это будет приложение, которое загружается, когда пользователь вводит URL в меню «Пуск» или Проводник Windows или приложение передает URL на ShellExecute/Ex().

1 голос
/ 09 апреля 2009

Считайте значение по умолчанию HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet и при необходимости отметьте HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\XXX\shell\open\command, где XXX - это значение, полученное с первого ключа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...