Получить стандартный браузер в системе.

Всем лучи добра! Собственно как получить путь к браузеру "по умолчанию"?Вариант с реестром я уже видел: Открываю HKCR, там ищу htmlfile/shell/open.... и облом - там прописан IE, хотя почему-то запускается FF. Тот же сабж с ветками http,https,.html,.htm везде прописан IE, а реально запускается FF. Не понятно. Может кто знает годное решение?
9 ответов

Вот тут посмотрите: HKEY_LOCAL_MACHINE\SOFTWARE\Clients \*****************\FIREFOX.EXE\Capa bilities\FileAssociations


Не вариант. Мне нужен стандартный браузер для интернетов, установленный на ПК пользователя, по его желанию, а не единственный FF.


У меня в HKCR\http\shell\open\command стоит Opera, как и должно быть. Даже более того: у меня мультимедийная клава с дополнительными кнопками, есть и запуск браузера. Начиная с XP, кнопки поддерживаются родным драйвером Windows, и в реестре для них есть настройка, которую я не менял:
REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey\7]
"Association"="http"
При нажатии кнопки "Браузер" на клаве запускается именно Opera, что как бы намекает.


Попробуй FindExecutable
procedure DefaultBrowser;
var
 tmp: PChar;
 fexe: LPTSTR;
begin
 tmp := StrAlloc(255);
 fexe := StrAlloc(255);
 try
 GetTempPath(255, tmp);
 if FileCreate(tmp + 'temp.html') <> -1 then
 begin
 if FindExecutable('temp.html', tmp, fexe) > 32 then
 ShowMessage(ExtractFileName(fexe));
 SysUtils.DeleteFile(tmp + 'temp.html');
 end;
 finally
 StrDispose(tmp);
 StrDispose(fexe);
 end;
end;


Vapaamies, Да у меняустановлены все оперы(12, 16 и Next)а так же Google Chrome, Safari, IE аж 3 штуки ну и пачка FireFox. Последний, стабильный - является браузером по умолчанию. Я бы не создал тему, если бы все было так просто "найти ассоциацию с браузером". Смотрел ветки реестра: .htm, .html, htmlfile, http, https - везде прописан IE, у http прописана опера, у https прописан FF.Так что, четкой уверенности в том, что вслед. раз я найду в http не дефолный браузер - выше среднего, учитывая что уж опера точно не дефолтный браузер.igh0st, спасибо, посмотрю.


ShellExecute тоже по идее должен открывать url в дефолте


Я бы не создал тему, если бы все было так просто "найти ассоциацию с браузером". Смотрел ветки реестра: .htm, .html, htmlfile, http, https - везде прописан IE, у http прописана опера, у https прописан FF.
Ну возьми у кого-нибудь такую клаву напрокат. Жил бы рядом -- дал бы, у меня старая есть. Рабочая, держу про запас.Из опыта с клавой я по-прежнему придерживаюсь мнения, что "браузер по умолчанию" программно означает "обработчик http". Попробуй поискать другие места, где он может быть установлен или перекрыт для конкретного пользователя. Скажем, существует ветка HKCU\Software\Classes, но внутри нее про http у меня ничего нет.Разрядность системы и браузеров какая? Хотя, в Windows 7 вроде уже нет чехарды с SysWOW64 в реестре, как было в XP/2003.


igh0st, спасибо. Ваше решение работает. Не много упростил его:
function GetDefaultBrowser: string;
var
 tmp: string;
 s: array [0 .. MAX_PATH] of Char;
begin
 Result := '';
 tmp := IncludeTrailingPathDelimiter(GetEnvironmentVariable('TEMP'));
 if (FileCreate(tmp + 'temp.html') <> -1) then
 begin
 if (FindExecutable('temp.html', PChar(tmp), @s) > 32) then //Подключить ShellAPI
 Result := s;
 DeleteFile(PChar(tmp + 'temp.html'));
 end;
end;


По ходу скорее всего здесь (в XP по крайней мере)
HKEY_CURRENT_USER\Software\Classes\http\shell\open\command
FindExecutable получше, дабы не зависить от версии винды