Как получить текущую установленную версию IE с Delphi?

Как я могу получить версию IE, установленную на моем компьютере?


Я нашел обходной путь для своей проблемы, так что мне больше не нужно проверять версию установленного в данный момент IE. Спасибо за ответы. :)


person jhodzzz    schedule 15.07.2010    source источник


Ответы (4)


uses
  Registry;

function GetIEVersion : string;
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    Reg.OpenKeyReadOnly('Software\Microsoft\Internet Explorer');
    try
      Result := Reg.ReadString('Version');
    except
      Result := '';
    end;
    Reg.CloseKey;
  finally
    Reg.Free;
  end;
end;

Эта функция должна возвращать текущий установленный номер версии IE.

person wimvds    schedule 15.07.2010

Я бы обновил упомянутые здесь ответы, старый и MS KB.

Первый ключ:

Microsoft лжет о значении версии в IE10, чтобы не сломать программы, которые могут распознавать только однозначный номер версии. Более (хакерский) способ проверить версию IE — проверить версию файла mshtml.dll Sheng Jiang 蒋晟 11 сен.

Второй ключ:

В более новых версиях IE 10 и 11 истинная версия записывается в значение «svcVersion», а значение «Версия» содержит в начале «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;
person Sergey Ryvkin    schedule 28.03.2017

использует реестр;

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;
person Alex Ferreira de Almeida    schedule 19.09.2019

uses
  Registry;

function GetIEVersion(Key: string): string;
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    Reg.OpenKey('Software\Microsoft\Internet Explorer', False);
    try
      Result := Reg.ReadString(Key);
    except
      Result := '';
    end;
    Reg.CloseKey;
  finally
    Reg.Free;
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage('IE-Version: ' + GetIEVersion('Version')[1] + '.' + GetIEVersion('Version')[3]);
  ShowMessage('IE-Version: ' + GetIEVersion('Version'));
end;

Источник: http://www.vbforums.com/showthread.php?t=342893< /а>

person Aaron Harun    schedule 15.07.2010
comment
прежде чем я разместил здесь свой вопрос, я уже видел этот код, но там есть комментарий о том, что этот код не может получить версию, если он уже достигает версии 10. вот почему я разместил вопрос здесь. - person jhodzzz; 15.07.2010