Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Komplettes Registry-Backup (https://www.delphipraxis.net/48239-komplettes-registry-backup.html)

PierreB 22. Jun 2005 16:34


Komplettes Registry-Backup
 
Guten Morgen, :hi:

ich möchte gern ein komplettes Backup der gesamten Registry machen. Und da auf 2 Arten:
Einmal wie man manuell aus der Registry machen kann, unter W2k heißt die Funktion "Registrierungsdatei exportieren" und auf die zweite Weise möchte ich das alle Registryeinträge in einem Textdokument gespeichert werden. Leider habe ich keine Ahnung wie man diese Funktionen der Registry aufruft (Das heißt, wie man einzelne Einträge aufruft weiß ich schon, aber wenn man das mit allen macht würde es wohl zu lange dauern).

Kann mir jemand helfen ?

DGL-luke 22. Jun 2005 16:56

Re: Komplettes Registry-Backup
 
so lange dauert das nicht. bei mir ~5 sekunden für eine resultierende textdatei von 38,5 MB.
(das *.reg file ist nix anderes als eine textdatei. deine zweite frage sollte sich also erübrigen)

Phistev 22. Jun 2005 17:04

Re: Komplettes Registry-Backup
 
Zitat:

Zitat von Konsole
C:\>reg export /?

Konsolenregistrierungsprogramm für Windows - Version 3.0
Copyright (C) Microsoft Corp. 1981-2001. Alle Rechte vorbehalten


REG EXPORT Schlüssel Datei

Schlüssel STAMMSCHLÜSSEL\Unterschlüssel (nur lokaler Computer)
STAMMSCHLÜSSEL [ HKLM | HKCU | HKCR | HKU | HKCC ]
Unterschlüssel Vollst. Name eines Registrierungsschlüssels
unter dem STAMMSCHLÜSSEL.
Datei Name der zu exportierenden Datenträgerdatei.

Beispiele:

REG EXPORT HKLM\Software\MyCo\MyApp AppBkUp.reg
Exportiert alle untergeordnete Schlüssel und Werte des Schlüssels.
MyApp in die Datei AppBkUp.reg

C:\>

Evtl. kann dir dieses Konsolen-Programm (unter Win 2000/XP) weiterhelfen (unter Win 9x/ME ist's regedit)...

DGL-luke 22. Jun 2005 17:30

Re: Komplettes Registry-Backup
 
oh sorry das ist ja ne delphi-frage :roll:

das TRegistry-Objekt hat doch auch eine savetofile-methode, oder?

Phistev 22. Jun 2005 17:36

Re: Komplettes Registry-Backup
 
Die erstellt eine .DAT-Datei (unter Win9x/ME) oder eine HIVE-Datei (unter Windows 2000/XP), keine Text-/.REG-Datei.

/edit: Auf der Basis dieser Funktion (bzw. der entsprechenden API-Funktion) basieren die Programme die die Registry defragmentieren.

scp 22. Jun 2005 17:51

Re: Komplettes Registry-Backup
 
@Phistev
Wenn du mit "die" die reg.exe meinst:
reg save erstellt eine Hive-Datei
reg export erstellt eine .reg-Datei

Unter 9x/Me gibt es meines wissens keine reg.exe

PS: Unter 2000/XP sind die .reg-Dateien zwar Textdateien, aber sie liegen in Unicode vor, deshalb lassen sie sich nur mit entsprechenden Unicode-Komponenden (Z.B. TWideStringList) verarbeiten.

Phistev 22. Jun 2005 17:55

Re: Komplettes Registry-Backup
 
mit die meinte ich die Funktion, unter Win9x/ME heißt's statt reg.exe regedit.exe (siehe auch mein erster Beitrag)

SirThornberry 22. Jun 2005 18:20

Re: Komplettes Registry-Backup
 
von exportieren würde ich abreiten, es kommt spätestens zu problemen wenn ein Value vom Typ "Zeischenfolge" exportiert wird welcher Zeilenumbrüche enthält. Wenn du später versuchst diesen String wieder in die Registry zu bekommen wirst du scheitern.

scp 22. Jun 2005 18:39

Re: Komplettes Registry-Backup
 
Das ist mir bis jetzt aber noch nicht in den WEg gekomen und ist auch sicher nicht zulässig. WEnns um Standard-Windows-Registrywerte oder eigene Einstellungen geht, dürfte dies kein Thema sein. Mehrzeilige String-Varaiablen werten als REG_MULTI_SZ gespeichert und sind durch #0 getrennt, als Text werden sie in Hexdezimalwerten exportiert.

SirThornberry 22. Jun 2005 18:55

Re: Komplettes Registry-Backup
 
@scp: Sag das mal den programmierern die sich nicht daran halten. Wenn aus Delphi heraus mir Registry.WriteString ein Wert in die Registry geschrieben wird (z.B.: Memo.Text) tritt nämlich genau der Fehler auf.

scp 22. Jun 2005 19:02

Re: Komplettes Registry-Backup
 
Genau das wollte ich ja verhindern :-D

PierreB 23. Jun 2005 08:59

Re: Komplettes Registry-Backup
 
Zitat:

Zitat von DGL-luke
oh sorry das ist ja ne delphi-frage :roll:

das TRegistry-Objekt hat doch auch eine savetofile-methode, oder?

Nein, leider nicht. ;)

Ok danke für eure Antworten, habs jetzt hinbekommen.

freak4fun 23. Jun 2005 09:07

Re: Komplettes Registry-Backup
 
Hallo :hi:,
kannst du vielleicht deine Lösung hier posten? Das wäre echt nett, das interessiert mich nämlich auch. ;)

Thx und MfG
freak :mrgreen:

drstar 17. Aug 2005 17:52

Re: Komplettes Registry-Backup
 
Nun, am einfachsten kommst Du weg, wenn Du einfach %SYSTEMROOT%+'\REGEDIT.EXE', '/e Zieldatei' aufrufen, mußt mal nach shellexec schauen, ansonsten schick ich dir auch gerne ne Methode shellexecandwait (aus irgendnem Forum...), damit klappts. Die resultierende Datei ist dann ne Textdatei (i.d.R. ne .REG).
Ich gehe mal davon aus, Du weißt, wie man Umgebungsvariablen ausliest mit Delphi ;-)

Beispiel (hab Delphi grad nicht zur Hand, notfalls die Hilfe benutzen):

shellexecandwait(SysPath+'REGEDIT.EXE', '/e C:\REG-BACKUP.REG');
dauert ein paar sek,danach findest Du die Datei dann im Root von C: .

Zacherl 17. Aug 2005 18:10

Re: Komplettes Registry-Backup
 
Hallo,
mache NIE ein Registry Backup mit dem Registry Editor weil
1. Bsp: Werte vor dem Export: DWORD: (1.wert) 56
Zeichenfolge: (2. wert) Hallo
Dann erstellst du einen Wert dazu und änderst einen. Alle Werte:
DWORD: (1.wert) 77
Zeichenfolge: (2. wert) Hallo
DWORD: (3.wert) 0
Werte nach dem Import:
DWORD: (1.wert) 56
Zeichenfolge: (2. wert) Hallo
DWORD: (3.wert) 0

Du siehst: vorhandene Werte werden nicht gelöscht, wenn sie nicht in der REG Datei stehen!

Zudem werden einige Werte überhaup nicht erst mitgespeichrt, oder wenn dies zufällig doch sein sollte werden sie nicht rückgespeichert, weil sie zu Laufzeit vom System benutzt werden!
Z.B.: der Schlüssel SAM. Man hat nicht einmal Lesezugriff zur Laufzeit ...

Florian

Olli 17. Aug 2005 18:54

Re: Komplettes Registry-Backup
 
Zitat:

Zitat von SirThornberry
von exportieren würde ich abreiten, es kommt spätestens zu problemen wenn ein Value vom Typ "Zeischenfolge" exportiert wird welcher Zeilenumbrüche enthält.

Irrtum. Solche Zeichen werden genauso kodiert wie du es mit #0 im Codeeditor machst. Gibt also keine Probleme.

Und wenn du meinst, daß Zeilen in REG-Scripten nicht sehr lang sein dürfen, auch dem ist nicht so, man kann sie umbrechen!

Regedit.exe macht alles manuell, also wirst du nicht darum herumkommen es manuell zu machen, wenn du es so haben willst.

BTW: Die Backup-APIs dürften unter NT übrigens bestimmte Privilegien erfordern.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz