2010-07-15 35 views

回答

0
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

+0

之前,我張貼在這裏我的問題,我已經看到了這個代碼,但是有評論那裏,如果達到10版本的代碼無法檢索版本已經。這就是爲什麼我在這裏發佈一個問題。 – jhodzzz 2010-07-15 09:16:34

7
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當前安裝的版本號。

1

我會更新這裏提到的答案,old oneMS KB

第一個鍵:

微軟距離我們大約在IE10版本值,以避免破壞 程序只能識別單一的數字版本號。更 (hackish的)的方法是檢查IE版本是檢查 的Mshtml.dll的文件版本 - 在0:06

第二個鍵盛強蔣晟09月11日'13:

在較新的版本中,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;