如何使用Delphi获得当前安装的IE版本?

如何使用Delphi获得当前安装的IE版本?,delphi,internet-explorer,Delphi,Internet Explorer,如何在我的计算机上安装IE版本 我已经找到了解决问题的办法,这样我就不必再检查当前安装的IE版本了。谢谢你的回答。:) 资料来源: 此函数应返回当前安装的IE版本号。我将更新此处提到的答案、和 第一个关键点: 微软在IE10版本值上撒了谎以避免破坏 只能识别单个数字版本号的程序。更多 (黑客)检查IE版本的方法是检查 mshtml.dll–盛江蒋晟 2013年9月11日0:06 第二个关键点: 在较新版本IE 10和11中,真实版本记录在值中 “svcVersion”和值“Version”在“

如何在我的计算机上安装IE版本


我已经找到了解决问题的办法,这样我就不必再检查当前安装的IE版本了。谢谢你的回答。:)

资料来源:


此函数应返回当前安装的IE版本号。

我将更新此处提到的答案、和

第一个关键点:

微软在IE10版本值上撒了谎以避免破坏 只能识别单个数字版本号的程序。更多 (黑客)检查IE版本的方法是检查 mshtml.dll–盛江蒋晟 2013年9月11日0:06

第二个关键点:

在较新版本IE 10和11中,真实版本记录在值中 “svcVersion”和值“Version”在“9”开头包含

所有这些都遵循代码

function GetIEVersion: string;
begin
  with TRegistry.Create do
  try
    RootKey := HKEY_LOCAL_MACHINE;
    OpenKeyReadOnly('Software\Microsoft\Internet Explorer');
    try
      Result := ReadString('svcVersion');
      if Result.IsEmpty then Result := ReadString('Version');
      if Result.IsEmpty then raise Exception.Create('');
    except
      Result := '0';
    end;
    CloseKey;
  finally
    Free;
  end;
end;
使用 登记处

function GetIEVersion(AOnlyMajorVersion: Boolean = False): string;
var
   lVersao: string;
   lReg: TRegistry;
begin
   Result := '';

   lReg := TRegistry.Create;

   try

      lReg.RootKey := HKEY_LOCAL_MACHINE;

      if lReg.OpenKeyReadOnly('Software\Microsoft\Internet Explorer') then
      begin
         lVersao := '';

         if lReg.ValueExists('svcVersion') then
         begin
            lVersao := lReg.ReadString('svcVersion');
         end
         else if lReg.ValueExists('Version') then
         begin
            lVersao := lReg.ReadString('Version');
         end
         else if lReg.ValueExists('IVer') then
         begin
            lVersao := lReg.ReadString('IVer');
         end;

         if (lVersao <> '') then
         begin
            if (AOnlyMajorVersion) then
            begin
               if (WordCount(lVersao, ['.']) > 0) then
               begin
                  lVersao := ExtractWord(1, lVersao, ['.']);
               end;
            end;
         end;

         Result := Trim(lVersao);

         lReg.CloseKey;
      end;

   finally
      lReg.Free;
   end;
end;
函数GetIEVersion(aonlymahorversion:Boolean=False):字符串;
变量
lVersao:字符串;
lReg:树木学;
开始
结果:='';
lReg:=TRegistry.Create;
尝试
lReg.RootKey:=HKEY_本地_机器;
如果lReg.OpenKeyReadOnly('Software\Microsoft\internetexplorer'),则
开始
lVersao:='';
如果lReg.ValueExists('svcVersion'),则
开始
lVersao:=lReg.ReadString('svcVersion');
结束
否则,如果lReg.VALUE存在(“版本”),则
开始
lVersao:=lReg.ReadString('Version');
结束
否则,如果lReg.VALUE存在('IVer'),则
开始
lVersao:=lReg.ReadString('IVer');
结束;
如果(lVersao“”),则
开始
如果(AOnlyMajorVersion)那么
开始
如果(字数(lVersao,['.]]>0),则
开始
lVersao:=提取字(1,lVersao,['.]];
结束;
结束;
结束;
结果:=微调(lVersao);
lReg.CloseKey;
结束;
最后
lReg.免费;
结束;
结束;

在我将我的问题发布到这里之前,我已经看到了这段代码,但是有一条评论说,如果这段代码已经达到版本10,它将无法检索到版本。这就是为什么我在这里贴了一个问题。
function GetIEVersion: string;
begin
  with TRegistry.Create do
  try
    RootKey := HKEY_LOCAL_MACHINE;
    OpenKeyReadOnly('Software\Microsoft\Internet Explorer');
    try
      Result := ReadString('svcVersion');
      if Result.IsEmpty then Result := ReadString('Version');
      if Result.IsEmpty then raise Exception.Create('');
    except
      Result := '0';
    end;
    CloseKey;
  finally
    Free;
  end;
end;
function GetIEVersion(AOnlyMajorVersion: Boolean = False): string;
var
   lVersao: string;
   lReg: TRegistry;
begin
   Result := '';

   lReg := TRegistry.Create;

   try

      lReg.RootKey := HKEY_LOCAL_MACHINE;

      if lReg.OpenKeyReadOnly('Software\Microsoft\Internet Explorer') then
      begin
         lVersao := '';

         if lReg.ValueExists('svcVersion') then
         begin
            lVersao := lReg.ReadString('svcVersion');
         end
         else if lReg.ValueExists('Version') then
         begin
            lVersao := lReg.ReadString('Version');
         end
         else if lReg.ValueExists('IVer') then
         begin
            lVersao := lReg.ReadString('IVer');
         end;

         if (lVersao <> '') then
         begin
            if (AOnlyMajorVersion) then
            begin
               if (WordCount(lVersao, ['.']) > 0) then
               begin
                  lVersao := ExtractWord(1, lVersao, ['.']);
               end;
            end;
         end;

         Result := Trim(lVersao);

         lReg.CloseKey;
      end;

   finally
      lReg.Free;
   end;
end;