我用这个函数来获取IE版本.但在某些情况下,它无法找到此密钥并返回0.还有另一种不依赖于注册表的方法吗? function GetIEVersion: string;var Reg: TRegistry; S: string; i : integer;begin Reg := TRegistry
function GetIEVersion: string;
var
Reg: TRegistry;
S: string;
i : integer;
begin
Reg := TRegistry.Create;
with Reg do
begin
RootKey := HKEY_LOCAL_MACHINE;
OpenKey('Software\Microsoft\Internet 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('Software\Microsoft\Internet Explorer') then
try
Result := Reg.ReadString('Version');
finally
Reg.CloseKey;
end;
finally
Reg.Free;
end;
if Result = '' then
Result := '0';
end;
