加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在Delphi上获取IE版本 – 注册表解决方案无效

发布时间:2020-12-15 09:08:47 所属栏目:大数据 来源:网络整理
导读:我用这个函数来获取IE版本.但在某些情况下,它无法找到此密钥并返回0.还有另一种不依赖于注册表的方法吗? function GetIEVersion: string;var Reg: TRegistry; S: string; i : integer;begin Reg := TRegistry.Create; with Reg do begin RootKey := HKEY_LO
我用这个函数来获取IE版本.但在某些情况下,它无法找到此密钥并返回0.还有另一种不依赖于注册表的方法吗?

function GetIEVersion: string;
var
   Reg: TRegistry;
   S: string;
   i : integer;
begin
   Reg := TRegistry.Create;
   with Reg do
      begin
         RootKey := HKEY_LOCAL_MACHINE;
         OpenKey('SoftwareMicrosoftInternet Explorer',False);
         if ValueExists('Version') then
          begin
            S := ReadString('Version');
          end
         else
         begin
            S := '0';
         CloseKey;
        end;
         Free;
      end;
    result := s;
end;

解决方法

TRegistry.OpenKey()使用TRegistry.Access属性来了解打开密钥时要请求的权限.默认情况下,TRegistry.Access设置为KEY_ALL_ACCESS,仅限于管理员.请改用TRegistry.OpenKeyReadOnly().此外,为了更好地衡量,您可以删除ValueExists()检查,因为如果值不存在,ReadString()将返回空字符串.

试试这个:

function GetIEVersion: string; 
var 
  Reg: TRegistry; 
begin 
  Result := '';
  Reg := TRegistry.Create; 
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE; 
    if Reg.OpenKeyReadOnly('SoftwareMicrosoftInternet Explorer') then
    try
      Result := Reg.ReadString('Version'); 
    finally
      Reg.CloseKey; 
    end; 
  finally
    Reg.Free; 
  end;
  if Result = '' then
    Result := '0'; 
end;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读