Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как узнать browser по умолчанию?

01.01.2007
{ 
 
First we create a temporary file and call the
 
function FindExecutable to get the associated Application.
}
 
 
function GetAppName(Doc: string): string;
var
  FN
, DN, RES: array[0..255] of char;
begin
 
StrPCopy(FN, DOC);
  DN
[0]  := #0;
  RES
[0] := #0;
 
FindExecutable(FN, DN, RES);
 
Result := StrPas(RES);
end;
 
function GetTempFile(const Extension: string): string;
var
 
Buffer: array[0..MAX_PATH] of char;
  aFile
: string;
begin
 
GetTempPath(SizeOf(Buffer) - 1, Buffer);
 
GetTempFileName(Buffer, 'TMP', 0, Buffer);
 
SetString(aFile, Buffer, StrLen(Buffer));
 
Result := ChangeFileExt(aFile, Extension);
end;
 
procedure TForm1
.Button1Click(Sender: TObject);
var
  f
: System.Text;
  temp
: string;
begin
 
// get a unique temporary file name
 
// eine eindeutige Temporare Datei bekommen
  temp
:= GetTempFile('.htm');
 
// Create the file
 
// Datei erstellen
 
AssignFile(f, temp);
  rewrite
(f);
  closefile
(f);
 
// Show the path to the browser
 
// Pfad + Programmname zum Browser anzeigen.
 
ShowMessage(GetAppName(temp));
 
// Finally delete the temporary file
 
// Temporaare Datei wieder loschen
 
Erase(f);
end;

//Using the Registry: 
//************************************************
 
uses
 
Registry;
 
procedure TForm1
.Button1Click(Sender: TObject);
var
 
Reg: TRegistry;
 
KeyName: string;
 
ValueStr: string;
begin
 
Reg := TRegistry.Create;
 
try
   
Reg.RootKey := HKEY_CLASSES_ROOT;
   
KeyName     := 'htmlfile\shell\open\command';
   
if Reg.OpenKey(KeyName, False) then
   
begin
     
ValueStr := Reg.ReadString('');
     
Reg.CloseKey;
     
ShowMessage(ValueStr);
   
end
   
else
     
ShowMessage('There is nоt a default browser');
 
finally
   
Reg.Free;
 
end;
end;

//************************************************ 
{Copyright (c) by Code Central}
 
type
 
TBrowserInformation = record
   
Name: string;
   
Path: string;
   
Version: string;
 
end;
 
function LongPathName(ShortPathName: string): string;
var
  PIDL
: PItemIDList;
 
Desktop: IShellFolder;
 
WidePathName: WideString;
 
AnsiPathName: AnsiString;
begin
 
Result := ShortPathName;
 
if Succeeded(SHGetDesktopFolder(Desktop)) then
 
begin
   
WidePathName := ShortPathName;
   
if Succeeded(Desktop.ParseDisplayName(0, nil, PWideChar(WidePathName),
      ULONG
(nil^), PIDL, ULONG(nil^))) then
 
     
try
       
SetLength(AnsiPathName, MAX_PATH);
       
SHGetPathFromIDList(PIDL, PChar(AnsiPathName));
       
Result := PChar(AnsiPathName);
 
     
finally
       
CoTaskMemFree(PIDL);
     
end;
 
end;
end;
 
function GetDefaultBrowser: TBrowserInformation;
var
  tmp
: PChar;
  res
: LPTSTR;
 
Version: Pointer;
 
VersionInformation: Pointer;
 
VersionInformationSize: Integer;
 
Dummy: DWORD;
begin
  tmp
:= StrAlloc(255);
  res
:= StrAlloc(255);
 
Version := nil;
 
try
   
GetTempPath(255, tmp);
   
if FileCreate(tmp + 'htmpl.htm') <> -1 then
   
begin
     
if FindExecutable('htmpl.htm', tmp, res) > 32 then
     
begin
       
Result.Name := ExtractFileName(res);
       
Result.Path := LongPathName(ExtractFilePath(res));
       
// Try to determine the Browser Version
       
VersionInformationSize := GetFileVersionInfoSize(Res, Dummy);
       
if VersionInformationSize > 0 then
       
begin
         
GetMem(VersionInformation, VersionInformationSize);
         
GetFileVersionInfo(Res, 0, VersionInformationSize, VersionInformation);
         
VerQueryValue(VersionInformation, ('StringFileInfo040904E4ProductVersion'),
           
Pointer(Version), Dummy);
         
if Version <> nil then
           
Result.Version := PChar(Version);
         
FreeMem(VersionInformation);
       
end;
     
end
     
else
       
ShowMessage('Cannot determine the executable.');
     
SysUtils.DeleteFile(tmp + 'htmpl.htm');
   
end
   
else
     
ShowMessage('Cannot create temporary file.');
 
finally
   
StrDispose(tmp);
   
StrDispose(res);
 
end;
end;

Взято с сайта https://www.swissdelphicenter.ch/en/tipsindex.php