Как определить браузер Windows по умолчанию (в верхней части меню "Пуск")

Как я могу определить браузер Windows по умолчанию (в верхней части меню "Пуск")?

Я использую VB6, но, вероятно, не могу адаптировать другой код без проблем.

Есть похожие вопросы о переполнении стека, но, похоже, они дают неправильные ответы.

Например, ключ HKEY_LOCAL_MACHINE\Software\Clients\StartMenuInternet\ перечисляет как Internet Explorer, так и Firefox на моем ПК.

И получение.html-ассоциации мне тоже не удается, так как HTML-файлы связаны с IE, но Firefox - мой браузер по умолчанию.

Обратите внимание, что я не хочу на самом деле открыть браузер, просто получить его имя.

4 ответа

Решение

HKEY_CURRENT_USER\Software\Classes\http\shell\open\command\(Default) является обработчиком текущего пользователя для протокола HTTP (что означает "браузер по умолчанию"; ПРИМЕЧАНИЕ: это НЕ то же самое, что .html обработчик по умолчанию!).

Однако в верхней части меню "Пуск" можно выбрать другой браузер, не меняя настройки по умолчанию. К вашему сведению, имя исполняемого файла браузера в меню "Пуск" хранится в HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\(Default),

Протестировано в Windows 7 x64: это двухэтапный процесс. Браузер пользователя по умолчанию находится в ключе:

HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.html\UserChoice\Progid

Общее название ключа браузера:

  • IE: IE.AssocFile.HTM
  • FireFox: FirefoxHTML
  • Chrome: ChromeHTML
  • Опера: Opera.HTML

замещать <KEY NAME> ниже с одним из значений выше, чтобы найти исполняемый файл:

HKCR\<KEY NAME>\shell\open\command

Скрипт AutoHotkey для отображения пути браузера по умолчанию и исполняемого файла:

MsgBox % "Default browser: " Browser()

Browser()
{
    ; Find the Registry key name for the default browser
    RegRead, BrowserKeyName, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.html\UserChoice, Progid

    ; Find the executable command associated with the above Registry key
    RegRead, BrowserFullCommand, HKEY_CLASSES_ROOT, %BrowserKeyName%\shell\open\command

    ; The above RegRead will return the path and executable name of the brower contained within qoutes and optional parameters
    ; We only want the text contained inside the first set of quotes which is the path and executable
    ; Find the ending quote position (we know the beginning quote is in position 0 so start searching at position 1)
    StringGetPos, pos, BrowserFullCommand, ",,1

    ; Decrement by one for the StringMid to work correctly
    pos := --pos

    ; Extract and return the path and executable of the browser
    StringMid, BrowserPathandEXE, BrowserFullCommand, 2, %pos%
    Return BrowserPathandEXE
} 

Браузеры по умолчанию обычно устанавливаются для каждого пользователя. Вы пытались вместо этого использовать HKEY_CURRENT_USER? Появляется на моем там правильно.

reg QUERY HKEY_CLASSES_ROOT\htmlfile\shell\open\command /ve

вы получите что-то вроде

HKEY_CLASSES_ROOT\htmlfile\shell\open\command(по умолчанию) REG_SZ "C:\Program Files\Internet Explorer\iexplore.exe" %1

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