Перечислить ключи реестра

Материал из DRKB

Перечислить ключи реестра[править | править код]

{
  This example demonstrates how to enumerate all registry keys from
  a certain key (here: HKEY_CURRENT_USER)
}

uses
  Registry;

procedure EnumAllKeys(hkey: THandle; Lines: TStrings; var indent: Integer);
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
          Lines.Add(StringOfChar(' ', indent) + l[n]);
          if OpenKey(l[n], False) then
          begin
            EnumAllKeys(CurrentKey, Lines, indent);
            CloseKey;
          end;
        end;
      finally
        l.Free
      end;
    finally
      Free;
    end;
  Dec(indent, 2);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  indent: Integer;
begin
  Memo1.Clear;
  Memo1.Lines.Add('Keys under HKEY_CURRENT_USER');
  indent := 0;
  Memo1.Lines.BeginUpdate;
  try
    EnumAllKeys(HKEY_CURRENT_USER, Memo1.Lines, indent);
  finally
    Memo1.Lines.EndUpdate;
  end;
end;


Source: Взято с сайта: http://www.swissdelphicenter.ch
ID: 02287