Autor Beitrag
alex_id
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 73



BeitragVerfasst: Do 13.03.03 16:46 
Hi

Wie kann man die komplette Registry auslesen (alle Schlüssewerte) und dann zB in eine Textdatei speichern ???

danke

Alex
maximus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: Do 13.03.03 17:20 
Bist du wahnsinnig???

Darf man fragen wozu?

Theoretisch kannst du das mit einem rekursiven-algo machen, musst nur sehn ob der stack nicht überläuft.

Achja, wenn du die reg einfach nur sichern willst, dann kannst du dies auch in regEditor exportieren!

mfg.
alex_id Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 73



BeitragVerfasst: Do 13.03.03 18:00 
Hi

erstmal : ich bin nicht wahnsinnig !
gut es würde mir auch reichen einen kompletten Hauptschlüssel !!!

Das Problem ist :
Text Datein lassen sich besser vergleichen wenn du mehrere Registrys hast und du diese analysieren willst so musst du nicht an jeden PC gleichzeitig sitzen ... gut jetzt könntet ihr sagen man kann das auch drucken , aber warum diese Papierverschwendung wenn ich nur vergleichen möchte !!!

danke

Alex
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Do 13.03.03 19:41 
Mache doch folgendes, exportiere die doch einzeln die 5 Hauptschlüssel mit einem Programm. Dieses Programm funktioniert auch unter User-Rechten. Außerdem brauchst Du eh nur den HKEY_Current_User, HKEY_Local_Machine und gegebenenfalls noch HKEY_Classes_Root.
alex_id Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 73



BeitragVerfasst: Do 13.03.03 20:56 
Hi

Ja ... das war ja auch mein gedanke ... gibt es dafür in Delphi einen Befehl zum extrahieren ??? Oder muss ich die ganze Routine selber schreiben ???

Alex
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 13.03.03 21:09 
Selber schreiben.
Die Zeile:
ausblenden Quelltext
1:
regedit /s /e "f:\System Settings\HKCU Console.reg" "HKEY_CURRENT_USER\Console"					

mit Shellexecute ausführen.
alex_id Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 73



BeitragVerfasst: Do 13.03.03 21:11 
danke Luckie :wave: !!!

werde mich gleich mal dran versuchen !!!

bye

Alex
mb
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 185



BeitragVerfasst: So 01.02.04 16:06 
Hi!

Habe ein ähnliches Problem. Will auch einen Key sichern.

Delphi stellt in der Registry-Unit die Methode "SaveKey(Key, FileName)" zur Verfügung.

Kennt sich jemand damit aus? Wenn ich probiere, damit einen Schlüssel zu speichern, dann bekomme ich von dieser Funktion FALSE zurück geliefert.

Die Datei wird angelegt, hat aber eine Größe von 0 Byte....

_________________
Gruß,
MB
mb
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 185



BeitragVerfasst: So 01.02.04 16:25 
Ok, das weiter suchen und probieren hat sich gelohnt:

Delphi holt anscheinend nicht - wie in der Hilfe eigentlich beschrieben - die Rechte. Daher muss man das selbst tun.

Es funktioniert z.B. mit folgender Funktion, die ich hier gefunden habe:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
function SetPrivilege(Privilege: PChar; EnablePrivilege: Boolean; 
  out PreviousState: Boolean): DWORD; 
var 
  Token: THandle; 
  NewState: TTokenPrivileges; 
  Luid: TLargeInteger; 
  PrevState: TTokenPrivileges; 
  Return: DWORD; 
begin 
  PreviousState := True; 
  if (GetVersion() > $80000000) then 
    // Win9x 
    Result := ERROR_SUCCESS 
  else 
  begin 
    // WinNT 
    if not OpenProcessToken(GetCurrentProcess(), MAXIMUM_ALLOWED, Token) then 
      Result := GetLastError() 
    else 
    try 
      if not LookupPrivilegeValue(nil, Privilege, Luid) then 
        Result := GetLastError() 
      else 
      begin 
        NewState.PrivilegeCount := 1; 
        NewState.Privileges[0].Luid := Luid; 
        if EnablePrivilege then 
          NewState.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED 
        else 
          NewState.Privileges[0].Attributes := 0; 
        if not AdjustTokenPrivileges(Token, False, NewState, 
          SizeOf(TTokenPrivileges), PrevState, Return) then 
          Result := GetLastError() 
        else 
        begin 
          Result := ERROR_SUCCESS; 
          PreviousState := 
            (PrevState.Privileges[0].Attributes and SE_PRIVILEGE_ENABLED <> 0); 
        end; 
      end; 
    finally 
      CloseHandle(Token); 
    end; 
  end; 
end;


Danach kann man dann entweder gleich mit API-Funktionen weitermachen, wie unter dem angegebenen Link beschrieben, oder... oder man verwendet dann die Delphi-Funktion, also etwa so:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
 // ... 
SetPrivilege('SeBackupPrivilege', True, done);
Reg := TRegistry.Create;
  try
    Reg.RootKey := HKCU;
    if Reg.SaveKey(key, dir + name);
  finally
    Reg.Free;
  end;
//...

_________________
Gruß,
MB
mb
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 185



BeitragVerfasst: So 01.02.04 17:35 
neues Problem:

Nun will ich das gesicherte ja auch wiederherstellen können.

Dies klappt scheinbar nicht. Ich dachte, ich hole mir die Rechter "seRestorePrivilege" ...

...doch da schlägt der Load- oder Restore-Vorgang dann fehl.

Habt ihr Ideen?

_________________
Gruß,
MB