You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Delphi在TMS Web Core网站中获取用户浏览器名称及版本

如何用Delphi获取主流浏览器的名称及版本信息

Windows下的主流浏览器大多会在注册表中记录安装信息,因此核心思路是通过读取注册表项来获取名称和版本;少数情况可通过读取主程序的文件版本信息补充。以下是针对各主流浏览器的具体实现:

1. Google Chrome

读取注册表中Chrome的版本记录,优先检查当前用户注册表,再检查系统级注册表:

function GetChromeVersion: string;
var
  Reg: TRegistry;
begin
  Result := '';
  Reg := TRegistry.Create(KEY_READ);
  try
    // 检查当前用户注册表
    Reg.RootKey := HKEY_CURRENT_USER;
    if Reg.OpenKeyReadOnly('Software\Google\Chrome\BLBeacon') then
    begin
      if Reg.ValueExists('version') then
        Result := 'Google Chrome ' + Reg.ReadString('version');
      Reg.CloseKey;
    end
    else
    begin
      // 检查系统级注册表
      Reg.RootKey := HKEY_LOCAL_MACHINE;
      if Reg.OpenKeyReadOnly('Software\Google\Chrome\BLBeacon') then
      begin
        if Reg.ValueExists('version') then
          Result := 'Google Chrome ' + Reg.ReadString('version');
        Reg.CloseKey;
      end;
    end;
  finally
    Reg.Free;
  end;
end;

2. Microsoft Edge(Chromium版)

与Chrome逻辑类似,读取Edge专属的注册表路径:

function GetEdgeVersion: string;
var
  Reg: TRegistry;
begin
  Result := '';
  Reg := TRegistry.Create(KEY_READ);
  try
    Reg.RootKey := HKEY_CURRENT_USER;
    if Reg.OpenKeyReadOnly('Software\Microsoft\Edge\BLBeacon') then
    begin
      if Reg.ValueExists('version') then
        Result := 'Microsoft Edge ' + Reg.ReadString('version');
      Reg.CloseKey;
    end
    else
    begin
      Reg.RootKey := HKEY_LOCAL_MACHINE;
      if Reg.OpenKeyReadOnly('Software\Microsoft\Edge\BLBeacon') then
      begin
        if Reg.ValueExists('version') then
          Result := 'Microsoft Edge ' + Reg.ReadString('version');
        Reg.CloseKey;
      end;
    end;
  finally
    Reg.Free;
  end;
end;

3. Mozilla Firefox

读取Mozilla官方注册的当前版本项:

function GetFirefoxVersion: string;
var
  Reg: TRegistry;
begin
  Result := '';
  Reg := TRegistry.Create(KEY_READ);
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    if Reg.OpenKeyReadOnly('Software\Mozilla\Mozilla Firefox') then
    begin
      if Reg.ValueExists('CurrentVersion') then
        Result := 'Mozilla Firefox ' + Reg.ReadString('CurrentVersion');
      Reg.CloseKey;
    end;
  finally
    Reg.Free;
  end;
end;

4. Opera

检查Opera软件目录下的稳定版子键,读取版本值:

function GetOperaVersion: string;
var
  Reg: TRegistry;
begin
  Result := '';
  Reg := TRegistry.Create(KEY_READ);
  try
    Reg.RootKey := HKEY_CURRENT_USER;
    if Reg.OpenKeyReadOnly('Software\Opera Software') then
    begin
      if Reg.KeyExists('Opera Stable') then
      begin
        Reg.OpenKey('Opera Stable', False);
        if Reg.ValueExists('version') then
          Result := 'Opera ' + Reg.ReadString('version');
        Reg.CloseKey;
      end;
      Reg.CloseKey;
    end
    else
    begin
      Reg.RootKey := HKEY_LOCAL_MACHINE;
      if Reg.OpenKeyReadOnly('Software\Opera Software') then
      begin
        if Reg.KeyExists('Opera Stable') then
        begin
          Reg.OpenKey('Opera Stable', False);
          if Reg.ValueExists('version') then
            Result := 'Opera ' + Reg.ReadString('version');
          Reg.CloseKey;
        end;
        Reg.CloseKey;
      end;
    end;
  finally
    Reg.Free;
  end;
end;

5. Safari(Windows版)

读取Apple注册的Safari版本信息:

function GetSafariVersion: string;
var
  Reg: TRegistry;
begin
  Result := '';
  Reg := TRegistry.Create(KEY_READ);
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    if Reg.OpenKeyReadOnly('Software\Apple Computer, Inc.\Safari') then
    begin
      if Reg.ValueExists('Version') then
        Result := 'Safari ' + Reg.ReadString('Version');
      Reg.CloseKey;
    end;
  finally
    Reg.Free;
  end;
end;

整合调用示例

可将上述函数整合,批量获取所有已安装浏览器信息:

procedure GetInstalledBrowsers(List: TStrings);
var
  procedure AddNonEmpty(const S: string);
  begin
    if Trim(S) <> '' then List.Add(S);
  end;
begin
  List.Clear;
  AddNonEmpty(GetChromeVersion);
  AddNonEmpty(GetEdgeVersion);
  AddNonEmpty(GetFirefoxVersion);
  AddNonEmpty(GetOperaVersion);
  AddNonEmpty(GetSafariVersion);
end;

注意事项

  • 64位系统中读取32位浏览器注册表时,需创建TRegistry时添加KEY_WOW64_32KEY权限,即TRegistry.Create(KEY_READ or KEY_WOW64_32KEY)。
  • 若浏览器安装在非默认路径导致注册表读取失败,可补充遍历常见安装目录,通过GetFileVersionInfo读取主程序的文件版本信息。
  • 确保程序拥有注册表读取权限,否则会返回空值。

内容的提问来源于stack exchange,提问作者Shaun Roselt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 05:08:14