Inno Setup 获取默认浏览器

Inno Setup Get default browser

我有一个软件需要在用户计算机上安装默认浏览器。

有什么办法可以得到吗?

谢谢

拿这个:

function GetBrowser() : String;
var
  RegistryEntry: String;
  Browser: String;
  Limit: Integer   ;
begin
  if RegQueryStringValue(HKEY_CLASSES_ROOT, 'http\shell\open\command', '', RegistryEntry) then
  begin
    Limit := Pos('.exe' ,RegistryEntry)+ Length('.exe');
    Browser := Copy(RegistryEntry, 1, Limit  );
    MsgBox('Your browser: ' + Browser , mbInformation, MB_OK);
  end;
end;

在 Windows 的现代版本上正确工作的解决方案不能基于与 http 协议的关联,因为它不再可靠。它应该基于像@GregT 对 How to determine the Windows default browser (at the top of the start menu).

的回答那样的解决方案

所以像这样:

function GetBrowserCommand: string;
var
  UserChoiceKey: string;
  HtmlProgId: string;
begin
  UserChoiceKey :=
    'Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.html\UserChoice';
  if RegQueryStringValue(HKCU, UserChoiceKey, 'ProgId', HtmlProgId) then
  begin
    Log(Format('ProgID to registered for .html is [%s].', [HtmlProgId]));
    if RegQueryStringValue(HKCR, HtmlProgId + '\shell\open\command', '', Result) then
    begin
      Log(Format('Command for ProgID [%s] is [%s].', [HtmlProgId, Result]));
    end;
  end;

  { Fallback for old version of Windows }
  if Result = '' then
  begin
    if RegQueryStringValue(HKCR, 'http\shell\open\command', '', Result) then
    begin
      Log(Format('Command registered for http: [%s].', [Result]));
    end;
  end;
end;

如果要从命令中提取浏览器路径,请使用如下代码:

function ExtractProgramPath(Command: string): string;
var
  P: Integer;
begin
  if Copy(Command, 1, 1) = '"' then
  begin
    Delete(Command, 1, 1);
    P := Pos('"', Command);
  end
    else P := 0;

  if P = 0 then
  begin
    P := Pos(' ', Command);
  end;
  Result := Copy(Command, 1, P - 1);
end;

(基于