如何通过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
相关产品推荐
相关产品推荐

