Как определить браузер 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