Можно в принципе, вот так:
Код:
uses Registry;
// Количество вложенных ключей и значений
procedure TForm1.Button1Click(Sender: TObject);
const
sKey = '\SOFTWARE\Microsoft\Windows\CurrentVersion';
var
rReg: TRegistry;
ki: TRegKeyInfo;
begin
rReg := TRegistry.Create;
with rReg do
begin
RootKey := HKEY_LOCAL_MACHINE;
if KeyExists(sKey) then
begin
OpenKey(sKey, false);
GetKeyInfo(ki);
CloseKey;
lbSubkeys.Caption := IntToStr(ki.NumSubKeys);
lbValues.Caption := IntToStr(ki.NumValues);
end;
end;
rReg.Free;
end;
Или так:
Код:
{
This example demonstrates how to enumerate all registry keys from
a certain key (here: HKEY_CURRENT_USER)
}
uses
Registry;
procedure TForm1.Button1Click(Sender: TObject);
var
indent: Integer;
procedure EnumAllKeys(hkey: THandle);
var
l: TStringList;
n: Integer;
begin
Inc(indent, 2);
with TRegistry.Create do
try
RootKey := hkey;
OpenKey(EmptyStr, False);
l := TStringList.Create;
try
GetKeynames(l);
CloseKey;
for n := 0 to l.Count - 1 do
begin
memo1.Lines.Add(StringOfChar(' ', indent) + l[n]);
if OpenKey(l[n], False) then
begin
EnumAllKeys(CurrentKey);
CloseKey;
end;
end;
finally
l.Free
end;
finally
Free;
end;
Dec(indent, 2);
end;
begin
Memo1.Clear;
Memo1.Lines.Add('Keys under HKEY_CURRENT_USER');
indent := 0;
Memo1.Lines.BeginUpdate;
try
EnumAllKEys(HKEY_CURRENT_USER);
finally
Memo1.Lines.EndUpdate;
end;
end;