function GetRegistryString(const RootKey: Windows.HKEY;
const SubKey, Name: string): string;
var
Reg: Registry.TRegistry; // registry access object
ValueInfo: Registry.TRegDataInfo; // info about registry value
begin
Result := '';
// Open registry at required root key
Reg := Registry.TRegistry.Create;
try
Reg.RootKey := RootKey;
// Open registry key and check value exists
if Reg.OpenKeyReadOnly(SubKey)
and Reg.ValueExists(Name) then
begin
// Check if registry value is string or integer
Reg.GetDataInfo(Name, ValueInfo);
case ValueInfo.RegData of
Registry.rdString, Registry.rdExpandString:
// string value: just return it
Result := Reg.ReadString(Name);
Registry.rdInteger:
// integer value: convert to string
Result := SysUtils.IntToStr(Reg.ReadInteger(Name));
else
// unsupported value: raise exception
raise SysUtils.Exception.Create(
'Unsupported registry type'
);
end;
end;
finally
// Close registry
Reg.Free;
end;
end;
//delphi/2292