Показать сообщение отдельно
  #4  
Старый 18.07.2007, 14:21
Аватар для 4kusNick
4kusNick 4kusNick вне форума
Местный
 
Регистрация: 06.09.2006
Адрес: Россия, Санкт-Петербург
Сообщения: 444
Репутация: 550
По умолчанию

Можно в принципе, вот так:
Код:
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;
__________________
THE CRACKER IS OUT THERE
Ответить с цитированием