(* Windows Registry Browser and Editor Made by Passwd Contact: passwd@net.hr irc.balcan.net #programming irc.elitesecurity.org #es All rights reserved :D *) unit Unit5; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, Registry; type TForm5 = class(TForm) TreeView1: TTreeView; procedure TreeView1Change(Sender: TObject; Node: TTreeNode); procedure TreeView1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } I1, I2, I3, I4, I5: TTreeNode; end; var Form5: TForm5; implementation {$R *.dfm} procedure TForm5.FormCreate(Sender: TObject); var koliko:DWORD; x,y:integer; subKeyName:array [0..MAX_PATH] of Char; subKeyNameSize:Cardinal; begin I1:=TreeView1.Items.Add(nil, 'HKEY_CLASSES_ROOT'); RegQueryInfoKey( HKEY_CLASSES_ROOT, // key handle NIL, // buffer for class name NIL, // size of class string NIL, // reserved @koliko, // number of subkeys NIL, // longest subkey size NIL, // longest class string NIL, // number of values for this key NIL, // longest value name NIL, // longest value data NIL, // security descriptor NIL); for x:=0 to koliko-1 do begin subKeyNameSize := SizeOf(subKeyName); RegEnumKeyEx(HKEY_CLASSES_ROOT, x, subKeyName, subKeyNameSize, nil, nil, nil, nil); TreeView1.Items.AddChild(I1,subKeyName); end; I2:=TreeView1.Items.Add(nil, 'HKEY_CURRENT_USER'); RegQueryInfoKey(HKEY_CURRENT_USER, nil, nil, nil, @koliko, nil, nil, nil, nil, nil, nil, nil); for x:=0 to koliko-1 do begin subKeyNameSize := SizeOf(subKeyName); RegEnumKeyEx(HKEY_CURRENT_USER,x, subKeyName,subKeyNameSize, nil,nil,nil,nil); TreeView1.Items.AddChild(I2,subKeyName); end; I3:=TreeView1.Items.Add(nil, 'HKEY_LOCAL_MACHINE'); RegQueryInfoKey(HKEY_LOCAL_MACHINE, nil, nil, nil, @koliko, nil, nil, nil, nil, nil, nil, nil); for x:=0 to koliko-1 do begin subKeyNameSize := SizeOf(subKeyName); RegEnumKeyEx(HKEY_LOCAL_MACHINE,x, subKeyName,subKeyNameSize, nil,nil,nil,nil); TreeView1.Items.AddChild(I3,subKeyName); end; I4:=TreeView1.Items.Add(nil, 'HKEY_USERS'); RegQueryInfoKey(HKEY_USERS, nil, nil, nil, @koliko, nil, nil, nil, nil, nil, nil, nil); for x:=0 to koliko-1 do begin subKeyNameSize:=SizeOf(subKeyName); RegEnumKeyEx(HKEY_USERS,x,subKeyName,subKeyNameSize, nil,nil,nil,nil); TreeView1.Items.AddChild(I4,subKeyName); end; I5:=TreeView1.Items.Add(nil, 'HKEY_CURRENT_CONFIG'); RegQueryInfoKey(HKEY_CURRENT_CONFIG, nil, nil, nil, @koliko, nil, nil, nil, nil, nil, nil, nil); for x:=0 to koliko-1 do begin subKeyNameSize:=SizeOf(subKeyName); RegEnumKeyEx(HKEY_CURRENT_CONFIG,x,subKeyName,subKeyNameSize, nil,nil,nil,nil); TreeView1.Items.AddChild(I5,subKeyName); end; end; procedure TForm5.TreeView1Click(Sender: TObject); var Reg:TRegistry; Slist:TStringList; begin end; procedure TForm5.TreeView1Change(Sender: TObject; Node: TTreeNode); var Reg:TRegistry; SList:TStringList; x:integer; begin if (TreeView1.Selected.Parent=I1) or (TreeView1.Selected.Parent=I2) or (TreeView1.Selected.Parent=I3) or (TreeView1.Selected.Parent=I4) or (TreeView1.Selected.Parent=I5) then begin if TreeView1.Selected.Parent=I1 then begin Reg:=TRegistry.Create; Reg.RootKey:=HKEY_CLASSES_ROOT; Reg.OpenKey('\'+TreeView1.Selected.Text+'\',false); SList:=TStringList.Create; Reg.GetKeyNames(SList); for x:=0 to SList.Count-1 do begin TreeView1.Items.AddChild(TreeView1.Selected,SList[x]); end; SList.Free; Reg.CloseKey; Reg.Free; end; if TreeView1.Selected.Parent=I2 then begin Reg:=TRegistry.Create; Reg.RootKey:=HKEY_CURRENT_USER; Reg.OpenKey('\'+TreeView1.Selected.Text+'\',false); SList:=TStringList.Create; Reg.GetKeyNames(SList); for x:=0 to SList.Count-1 do begin TreeView1.Items.AddChild(TreeView1.Selected,SList[x]); end; SList.Free; Reg.CloseKey; Reg.Free; end; if TreeView1.Selected.Parent=I3 then begin Reg:=TRegistry.Create; Reg.RootKey:=HKEY_LOCAL_MACHINE; Reg.OpenKey('\'+TreeView1.Selected.Text+'\',false); SList:=TStringList.Create; Reg.GetKeyNames(SList); for x:=0 to SList.Count-1 do begin TreeView1.Items.AddChild(TreeView1.Selected,SList[x]); end; SList.Free; Reg.CloseKey; Reg.Free; end; if TreeView1.Selected.Parent=I4 then begin Reg:=TRegistry.Create; Reg.RootKey:=HKEY_USERS; Reg.OpenKey('\'+TreeView1.Selected.Text+'\',false); SList:=TStringList.Create; Reg.GetKeyNames(SList); for x:=0 to SList.Count-1 do begin TreeView1.Items.AddChild(TreeView1.Selected,SList[x]); end; SList.Free; Reg.CloseKey; Reg.Free; end; if TreeView1.Selected.Parent=I5 then begin Reg:=TRegistry.Create; Reg.RootKey:=HKEY_CURRENT_CONFIG; Reg.OpenKey('\'+TreeView1.Selected.Text+'\',false); SList:=TStringList.Create; Reg.GetKeyNames(SList); for x:=0 to SList.Count-1 do begin TreeView1.Items.AddChild(TreeView1.Selected,SList[x]); end; SList.Free; Reg.CloseKey; Reg.Free; end; end else begin if (TreeView1.Selected.Parent.Parent=I1) or (TreeView1.Selected.Parent.Parent=I2) or (TreeView1.Selected.Parent.Parent=I3) or (TreeView1.Selected.Parent.Parent=I4) or (TreeView1.Selected.Parent.Parent=I5) then begin if TreeView1.Selected.Parent.Parent=I1 then begin Reg:=TRegistry.Create; Reg.RootKey:=HKEY_CLASSES_ROOT; Reg.OpenKey('\'+TreeView1.Selected.Parent.Text+'\'+TreeView1.Selected.Text+'\',false); SList:=TStringList.Create; Reg.GetKeyNames(SList); for x:=0 to SList.Count-1 do begin TreeView1.Items.AddChild(TreeView1.Selected,SList[x]); end; SList.Free; Reg.CloseKey; Reg.Free; end; if TreeView1.Selected.Parent.Parent=I2 then begin Reg:=TRegistry.Create; Reg.RootKey:=HKEY_CURRENT_USER; Reg.OpenKey('\'+TreeView1.Selected.Parent.Text+'\'+TreeView1.Selected.Text+'\',false); SList:=TStringList.Create; Reg.GetKeyNames(SList); for x:=0 to SList.Count-1 do begin TreeView1.Items.AddChild(TreeView1.Selected,SList[x]); end; SList.Free; Reg.CloseKey; Reg.Free; end; if TreeView1.Selected.Parent.Parent=I3 then begin Reg:=TRegistry.Create; Reg.RootKey:=HKEY_LOCAL_MACHINE; Reg.OpenKey('\'+TreeView1.Selected.Parent.Text+'\'+TreeView1.Selected.Text+'\',false); SList:=TStringList.Create; Reg.GetKeyNames(SList); for x:=0 to SList.Count-1 do begin TreeView1.Items.AddChild(TreeView1.Selected,SList[x]); end; SList.Free; Reg.CloseKey; Reg.Free; end; if TreeView1.Selected.Parent.Parent=I4 then begin Reg:=TRegistry.Create; Reg.RootKey:=HKEY_USERS; Reg.OpenKey('\'+TreeView1.Selected.Parent.Text+'\'+TreeView1.Selected.Text+'\',false); SList:=TStringList.Create; Reg.GetKeyNames(SList); for x:=0 to SList.Count-1 do begin TreeView1.Items.AddChild(TreeView1.Selected,SList[x]); end; SList.Free; Reg.CloseKey; Reg.Free; end; if TreeView1.Selected.Parent.Parent=I5 then begin Reg:=TRegistry.Create; Reg.RootKey:=HKEY_CURRENT_CONFIG; Reg.OpenKey('\'+TreeView1.Selected.Parent.Text+'\'+TreeView1.Selected.Text+'\',false); SList:=TStringList.Create; Reg.GetKeyNames(SList); for x:=0 to SList.Count-1 do begin TreeView1.Items.AddChild(TreeView1.Selected,SList[x]); end; SList.Free; Reg.CloseKey; Reg.Free; end; end; end; if (TreeView1.Selected.Parent.Parent.Parent=I1) or (TreeView1.Selected.Parent.Parent.Parent=I2) or (TreeView1.Selected.Parent.Parent.Parent=I3) or (TreeView1.Selected.Parent.Parent.Parent=I4) or (TreeView1.Selected.Parent.Parent.Parent=I5) then begin if TreeView1.Selected.Parent.Parent.Parent=I1 then begin Reg:=TRegistry.Create; Reg.RootKey:=HKEY_CLASSES_ROOT; Reg.OpenKey('\'+TreeView1.Selected.Parent.Parent.Text+TreeView1.Selected.Parent.Text+TreeView1.Selected.Text+'\',false); SList:=TStringList.Create; Reg.GetKeyNames(SList); for x:=0 to SList.Count-1 do begin TreeView1.Items.AddChild(TreeView1.Selected,SList[x]); end; SList.Free; Reg.CloseKey; Reg.Free; end; if TreeView1.Selected.Parent.Parent.Parent=I2 then begin Reg:=TRegistry.Create; Reg.RootKey:=HKEY_CURRENT_USER; Reg.OpenKey('\'+TreeView1.Selected.Parent.Parent.Text+TreeView1.Selected.Parent.Text+TreeView1.Selected.Text+'\',false); SList:=TStringList.Create; Reg.GetKeyNames(SList); for x:=0 to SList.Count-1 do begin TreeView1.Items.AddChild(TreeView1.Selected,SList[x]); end; SList.Free; Reg.CloseKey; Reg.Free; end; if TreeView1.Selected.Parent.Parent.Parent=I3 then begin Reg:=TRegistry.Create; Reg.RootKey:=HKEY_LOCAL_MACHINE; Reg.OpenKey('\'+TreeView1.Selected.Parent.Parent.Text+TreeView1.Selected.Parent.Text+TreeView1.Selected.Text+'\',false); SList:=TStringList.Create; Reg.GetKeyNames(SList); for x:=0 to SList.Count-1 do begin TreeView1.Items.AddChild(TreeView1.Selected,SList[x]); end; SList.Free; Reg.CloseKey; Reg.Free; end; if TreeView1.Selected.Parent.Parent.Parent=I4 then begin Reg:=TRegistry.Create; Reg.RootKey:=HKEY_USERS; Reg.OpenKey('\'+TreeView1.Selected.Parent.Parent.Text+TreeView1.Selected.Parent.Text+TreeView1.Selected.Text+'\',false); SList:=TStringList.Create; Reg.GetKeyNames(SList); for x:=0 to SList.Count-1 do begin TreeView1.Items.AddChild(TreeView1.Selected,SList[x]); end; SList.Free; Reg.CloseKey; Reg.Free; end; if TreeView1.Selected.Parent.Parent.Parent=I5 then begin Reg:=TRegistry.Create; Reg.RootKey:=HKEY_CURRENT_CONFIG; Reg.OpenKey('\'+TreeView1.Selected.Parent.Parent.Text+TreeView1.Selected.Parent.Text+TreeView1.Selected.Text+'\',false); SList:=TStringList.Create; Reg.GetKeyNames(SList); for x:=0 to SList.Count-1 do begin TreeView1.Items.AddChild(TreeView1.Selected,SList[x]); end; SList.Free; Reg.CloseKey; Reg.Free; end; end end; end.