如何使用Delphi获得当前安装的IE版本?
如何在我的计算机上安装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版本号。我将更新此处提到的答案、和 第一个关键点: 微软在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;