Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Registry... Mal wieder..... (https://www.delphipraxis.net/23058-registry-mal-wieder.html)

Corelgott 28. Mai 2004 02:00


Registry... Mal wieder.....
 
Hi @ all,

vermutlich kennt ihr das Problem: Man hat ein System formatiert und stellt im Nachhinein fest, dass man irgendewtas aus dem alten System ganz dringen draucht! Also die Backups rauskramen und die Daten rausholen....

Nun kommt das Problem: Ich hätte gerne die eMail-Konten von Outlook Express.
Ok klar die hab ich nicht als iaf irgendwo...
Also ist die Frage wo speichert die OE..

In der Registry...

Bingo... Ich habe bis her noch kein Tool im ganzen weiten web gefuden, das auf ne vernünftige art und weise auf die Registry zugreifen kann, wenn diese nur als ansamlung der "Quell"-Dateien existiert.

So langsam werde ich echt genervt... und Ich fing mal an darüber nach zu denken, ob man die Dateien nicht per hand und viel gedult dazu bringen könnte ihre daten preis zu geben...

Der aufbau an sich ist ja nicht so extrem schwer.. 5 Dateien jede repräsentiert einen HKey in der Reg... Aber das was in den einzelden Dateien steht macht mir dann doch noch etwas Sorgen... :pale:

Was meint ihr... Wäre das denkbar? Bzw. machbar?
Oder gibt 's sowas schon und ich bin blos zu doof google zu dienen?
(Ach ja und diese Wir-importieren-mal-einen-teil-der-Regfiles-in-die-laufde-Registry mit hilfer der Regedt32.exe kenn ich schon.. finde ich nicht so klasse.. Wenn ich das mit jeder Registry machen muss, die ich mir ansehen will.. würg...!)

Ach ja um eine Frage vor weg aus zu räumen: Ich will das ganze erst mal nur lesen!! Nicht schreiben; Ich vewrmute mal das würde einigen trouble mehr verursachen..

thx & cya
Corelgott

celinaw 28. Mai 2004 02:07

Re: Registry... Mal wieder.....
 
Hi :gruebel:

Kann dir nicht ganz folgen! Was willst du jetzt machen? Einfach nur werte aus der Registry auslesen?

Gruß Celina

Corelgott 28. Mai 2004 02:10

Re: Registry... Mal wieder.....
 
hmm Nicht ganz: :?:

ich habe ne ntuser.dat aus nem benuzterprofil (win 2000) auf ner cd oder sonst wo und will die öffnen bzw. einsehen...
(Ohne wie schon oben gesagt das mit der regedt32.exe zu "faken") :roll:

also ich leg mir nen Datei-Zeiger auf die Datei und mach das per hand!
(So oder so ähnlich)

klarer? :gruebel:

celinaw 28. Mai 2004 02:17

Re: Registry... Mal wieder.....
 
:gruebel:

Mh.., ich glaube da kann ich dir auch nicht helfen!

Vielleicht solltest du mal so eine *dat Datei anhängen, damit man sich die mal jemand ansehen kann.
Irgend wie wird es da sicher eine möglichkeit geben diese auszulesen.

Corelgott 28. Mai 2004 02:27

Re: Registry... Mal wieder.....
 
Datei anhängen... :shock:
ehhmmm nun ja also..... :roll:
Ich geh mal davon aus, dass du windows benuzt..
Und vermutlich ein einiger maßen Vernünftiges... (Also NT/Win200/XP)
Nomalerweise hat man das auch mehrere Benutzer; (Falls nicht erstell dir einen und logg dich einmal, damit das profil erstellt wird, unter dem Namen ein.. Dann kannst du dich wieder normal anmelden...)

Dann kann man die ntUser.dat des anderen benutzers öffnen / bzw. mit nem Hex-Editor betrachten...
(Leigt unter <System-Laufwerk>:\Dokumente und Einstellungen\<Benutzername>\ntuser.dat)
Des Weiteren ist so ne ntUser.dat recht groß so an die 2 mb...
und da die eigentlich jeder hat...

(Es sei noch angemerkt, dass es die bei Win9X und konsorten auch gibt... :wall: Bin aber zu faul um über den Pfad nach zu denken... :lol: )

wäre ein Upload recht wiedersinnig...
Außerdem käme man ja über nen trick (wie schon oben gesagt) an die Daten ran... Und ohne es böse zu meinen...
Ich hätte doch gerene meine Benutzerdaten behalten :oops: (Ja ich weis Privatsphäre ist out! :-D )

celinaw 28. Mai 2004 02:39

Re: Registry... Mal wieder.....
 
:mrgreen:

Das hast du aber schön erkärt!

Jetzt weiß ich was du für eine Datei meinst.
Mh.. :gruebel: Da kann ich nicht weiter helfen. Bin doch keine Hacker(in) :zwinker:


Gruß Celina

Luckie 28. Mai 2004 02:46

Re: Registry... Mal wieder.....
 
Tja. Viel Spass beim Rausfinden des Aufbaues der Datei. Ich denke mal, ohne nähere Infos über den Aufbau der Datei hast du keine Chance. Und ich glaube kaum, dass Microsoft für den Aufbau dieser Datei ein offizielle Dokumentation bereitstellt - closed source eben. ;)

Corelgott 28. Mai 2004 02:51

Re: Registry... Mal wieder.....
 
Jupp...

@ Luckie hast schon recht...
Ms eben.. aber man hat ja immer ne ahnung, was darin nun echt stehen soll...
Ok mir sit schon klar, dass mir die MSDN das nicht auf dem Silbertablett präsentieren wird... :roll:

Hmmm

Aber man kann es ja mal als herausvorderung sehen... :wink:

Und ich glaube gar nicht, dass man da so extrem chancenlos ist... Also "verschlüsselt" scheint die datei nicht zu sein.. bzw. In einer Form gepackt... wenn mein Hex-Editor nicht lügt ist da ganz schön viel klartext dirn...

cya

btw...

klingt nicht ganz uninteressant:
MSDN

Luckie 28. Mai 2004 02:58

Re: Registry... Mal wieder.....
 
Nehmen wir doch mal als Beispiel eine einfache typisierte Datei:
Delphi-Quellcode:
type
  TAdressen = record
    Name: String[40];
    Telefon: String[20];
  end;
Für solch eine Datei liese sich wohl recht schnell was schreiben, um sie auszulesen. Öffnen im HexEditor und man sieht wie lang die Felder sind und gut ist.

So, jetzt stell dir mal ein Bitmap vor:
Code:
---  header-anfang ---
.
.
.
.
---  header-ende  ---
---  bilddaten    ---
.
.


.
.
---  bildaten-ende ---
Wird schon schwieriger. Und als letztes sei hier noch das JPEG-Format mit Exif-Informationen genannt - ist wohl eines der komplexesten Formate, die es gibt. Selbst dazu Code zu entwicklen ist eine Aufgabe, die man nicht mal eben so macht. da stecken Wochen an Arbeit drinne und das, obwohl es dokumentiert ist!

Und jetzt überleg mal, wie das bei deiner dat-Datei aussieht... ;)

Nachtrag:
Es verhaält sich doch so: Letztendlich liegt jede Datei als Folge von nullen und einsen auf der Fetplatte vor. Und es ist eine Sache der Interpretation darus sinnvolle Informationen zu erzeugen. Bei einer Text Datei im ASCII Format entspricht jede Folge von 8 Bit einem ASCCI Code eines Zeichens. Bei einer Bitmap-Datei enthält jedes Byte oder auch mehrer Bytes Informationen welche Frabe ein Pixel hat. Aber dies gilt nur wiederum mit Einschränkungen. befinden sich die Bytes im Header stimmt das shcon wieder nicht und die Folge von nullen und einsen ist wieder anders zu interpretieren. So lange du nicht weißt, wie ein Byte an einer betimmten Stelle zu interpretieren ist, hast du keine Chance sinnvolle Informationen zu gewinnen. Und damit wären wir wieder am Anfang, du brauchst den Aufbau dieser Datei und an den dranzukommen, sollte so gut wie nicht möglich sein.

Corelgott 28. Mai 2004 03:05

Re: Registry... Mal wieder.....
 
Ok ich gesteh ja zu, das es recht komplex ist...

Aber wenn ich mir hier in der MSDN das ganze so durchles...
Zitat:

Long values (more than 2,048 bytes) should be stored as files with the file names stored in the registry. This helps the registry perform efficiently.
Hant man es also bei langen nicht mit so riesen Datenmengen zu tun, wie bei bildern! Es steckt, wei gesagt, auch vermutlich keine Kompirimierung drin!

Des weiteren gibt es eine nich sooo riesige anzahl von Werten:

Zitat:

REG_BINARY Binary data in any form.
REG_DWORD A 32-bit number.
REG_DWORD_LITTLE_ENDIAN A 32-bit number in little-endian format.
Microsoft® Windows® is designed to run on little-endian computer architectures. Therefore, this value is defined as REG_DWORD in the Windows header files.

REG_DWORD_BIG_ENDIAN A 32-bit number in big-endian format.
Some UNIX systems support big-endian architectures.

REG_EXPAND_SZ Null-terminated string that contains unexpanded references to environment variables (for example, "%PATH%"). It will be a Unicode or ANSI string depending on whether you use the Unicode or ANSI functions. To expand the environment variable references, use the ExpandEnvironmentStrings function.
REG_LINK Reserved for system use.
REG_MULTI_SZ Array of null-terminated strings, terminated by two null characters.
REG_NONE No defined value type.
REG_QWORD A 64-bit number.
REG_QWORD_LITTLE_ENDIAN A 64-bit number in little-endian format.
Windows is designed to run on little-endian computer architectures. Therefore, this value is defined as REG_QWORD in the Windows header files.

REG_SZ Null-terminated string. It will be a Unicode or ANSI string, depending on whether you use the Unicode or ANSI functions.
So ich habe zwar nicht so die mega ahnung.. aber ich vermute mal, das es entweder eine längeangabe für jedes element irgendwo gibt, oder das zwischen jedem teil eine art trennzeichen exitiert....

Oder liege ich da mal wieder völlig daneben? :gruebel:
Oder ist das mal wieder eine schnapsidee von mir?? :angle2: :kotz:

cya

Luckie 28. Mai 2004 03:14

Re: Registry... Mal wieder.....
 
Lies dir noch mal meinen Nachtrag durch. Und ob Trennzeichen oder nicht, da fängt es ja schon an. Du weißt es nicht. Bei meinem Beispiel mit der Adressdatenbank hast du zum Beispiel kein Trennzeichen. Du kannst nur auf die Länge der felder Schließen an Hand der Daten:
Code:
m                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Alt                                    Stephan                                                                                                                  Ellerhofer Straße 11                    34121                                   Kassel                                                                          (0561) 2860736                          0160  93052660                                                                   stephan.alt@gmx.net                                                                                                                                                                                                                                                                                                                                                                                                                                                            Angie                                                                                                                    Philosophenweg 49                                                                Kassel                                                                                                                   0173 5327291
Versuch hier mal die Struktur zu ermitteln. Da nicht jedes Feld ausgefüllt ist, kann ein Feld 40 aber auch 80 Bytes lang sein. Du weißt es eben nicht. Natürlich kann man die Struktur / Aufbau ermitteln, nur ohnr nähere Infos wirst du da wohl jahre mit beschäftigt sein.

Corelgott 28. Mai 2004 03:19

Re: Registry... Mal wieder.....
 
hmmmm....
@ Luckie
this is a justified objection......
(Und obendrein recht entmutigend......)
ok...

mal sehen...

Corelgott 2. Jun 2004 00:44

Re: Registry... Mal wieder.....
 
Hi @ all,

sacht mal Leute ist irgendwer von euch schon mal bei der Programmierung auf diese Windowszeichenkette gestoßen?
"èÿÿÿvk"
Falls ja hat wer ne ahnung über einen Datei, wo diese Zeichenkette (in verschienden Varaianten) als "Trennzeichen" dient?

thx für jeden Tipp...

cya
Corelgott

Phoenix 2. Jun 2004 07:03

Re: Registry... Mal wieder.....
 
Das ist IMHO der falsche Ansatz.

Es gibt ein paar API-Befehle, mit denen man genau in diese Dateistruktur teile der Registry - sogar ganze Hives - exportieren und auch wieder importieren kann.

Dann gibt es einen weiteren Befehl, mit dem man einen Zweig der Registry für den lokalen Prozess auf einen anderen Hive umbiegen kann. Nagelt mich nicht fest, bin noch nicht ganz so wach wie gewünscht, aber ich habe das auf jeden Fall hier in der DP schonmal gepostet.

Idee ist: Unter HKCU erstellst Du einen neuen Key, z.B. OldRegistry, und erzeugst dort für jeden Hive jeweils einen neuen Key. Diese Keys mappst Du dann nacheinander zum jeweiligen Hive und importierst die komplette Registry-Datei dorthin. Damit hast Du den kompletten Hive unter Deinem HKCU und kannst dort ganz normal drauf zugreifen.

Phoenix 2. Jun 2004 07:09

Re: Registry... Mal wieder.....
 
Noch ne andere Idee:

Mit RegReplaceKey tauschst Du erstmal alle Hives aus! Nach einem Reboot hast Du dann auf Deinem System die alte Registry vollständig im Zugriff. Du machst ein reguläres Backup der Registry mit dem RegEdit und wechselst dann wieder auf die neuen Dateien. - Reboot - und danach kannst Du aus den Backups die richtigen Werte raussuchen.

Zu meinem Beitrag oben: Das Mapping geht mit RegOverridePredefKey. Das MSDN wird Dir ab hier gerne weiterhelfen - wo Du nun die richtigen Begriffe hast ;-)

MathiasSimmack 2. Jun 2004 09:38

Re: Registry... Mal wieder.....
 
Ich weiß nicht ob es dir hilft, aber in so einem Fall würde ich mir ein kleines Skript/Programm schreiben, das die entsprechenden Schlüssel exportiert und sichert. Das habe ich bspw. für meine Filter und die Liste der blockierten Absender gemacht. Allerdings setzt das natürlich erst mal ein laufendes System voraus. Aber da man ja nicht täglich eine Neuinstallation macht, sollte dies nicht das Problem sein. Ich denke, wenn du deine Mailkonten eingerichtet hast, dann wirst du auch nichts mehr daran ändern. Und genau an dem Punkt könntest du ansetzen.

Lange Rede, kurzer Sinn: Wenn ich das richtig sehe, dann stecken die Konten im Schlüssel "HKCU\Software\Microsoft\Internet Account Manager\Accounts". Das Skript wäre also recht simpel gestrickt:
Code:
Dim Sh
Set Sh = CreateObject("WScript.Shell")

' get Personal folder
Dim strPersonal
strPersonal = Sh.SpecialFolders("MyDocuments")
If strPersonal = "" Then
   WScript.Echo """Eigene Dateien"" kann nicht gefunden werden."
   WScript.Quit
End If

' export accounts
Const strAccounts = """HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts"""
strOutput = "regedit /s /e """ & strPersonal & "\OEAccounts.reg"" " & strAccounts
Sh.Run strOutput, 1, true

Aber: Ich übernehme keine Garantie. Ich würde es testen, aber ich muss im Augenblick keine Neuinstallation machen. Mein System läuft gut. Außerdem habe ich für Notfälle immer noch ein Image. Wie dem auch sei, du solltest dir vor dem Import mal den Wert von "AssociatedID" anschauen (Registryschlüssel s. im Skriptcode). Es wäre denkbar, bzw. ich gehe mal davon aus, dass dieser Wert auch bei jeder (Neu-)Installation anders ist. In dem Fall wäre es zweckmäßig, wenn du die fett markierte Zeile
Code:
[HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts]
[b]"AssociatedID"=hex:xx,xx,xx,xx,xx,xx,xx[/b]
aus der REG-Datei entfernst, damit beim Import nicht deine (wahrscheinlich neue bzw. andere) ID überschrieben wird.


Aber das wäre IMHO die einfachste Variante, und du musst dich nicht mit irgendwelchen Dateiformaten herumschlagen.
Du darfst eben nur nicht vergessen, die Daten zu exportieren wenn dein System noch gut läuft.

teebee 2. Jun 2004 10:22

Re: Registry... Mal wieder.....
 
Habe spasseshalber mal bei www.wotsit.org 'Registry' eingegeben und siehe da: es gibt ein gezipptes Textdokument über das Registry-Format. (Nein, nicht das der reg-Files, sondern tatsächlich der dat-Files)
Hat allerdings einen Haken: ist nicht offiziell von MS...

Viel Spass beim Durchkämpfen, mir wäre das zu anstrengend :mrgreen:

Gruß, teebee

Corelgott 2. Jun 2004 10:25

Re: Registry... Mal wieder.....
 
Hmm Danke für die Idee!

Das ist schript gefällt mir.... Zwar ein "bischen" geschummelt mit dem run aufruf :-D
Aber Hauptsache es funzt... :thuimb:

Nun ja mein gedanke an dem frührern konzept war auch der, dass ich durch aus auch Kunden habe, die ihren pc nicht mehr booten können.. Wo ich echt also nur die einfachen Dateien habe.

Anderer Seites das was Phoenix vorgeschlagen hat ist ja so fast der weg, den ich nicht so "elegant" fand und vermeiden wollte. Ok, er will das dann nicht mehr von hand machen, sondern per proggi lösen.

Aber ich habe mir in den letzten Tagen die Ntuser.dat etwas genauer an gesehen und muss doch sagen, dass da ne "sichtbare" strucktur existiert...

Also so in der Form Steuerzeichen ... Lesbarer Text ... diese seltsame Trennkette ... Steuerzeichen

[ntuser.dat]
o100vc.dll - Osprey Capture Card 1
Àÿÿÿvk#



o100vc.dll - Osprey Capture Card #1
ðÿÿÿlf



3Com HomeConnect Digital Camera AVI Driver
Øÿÿÿlf
øÿÿÿèì

Àÿÿÿvk"
€1


MSVIDEO: Osprey-200 Capture Driver
Àÿÿÿvk%
€1


Hauppauge Win/TV Video Capture Driver
Èÿÿÿvk



o500vc.dll - Osprey-500 Card 1
Øÿÿÿ€Î
[/ntuser.dat]

Das klebt zur zeit "fast" so in meinem Momo feld. (HTMl mag nicht alle Zeichen :))
Da kann man doch ein System drin finden oder?
wie gesagt: ich vermute dass "ÿÿÿvk" das trennzeichen darstellt. Man müpsste sich blos mal ansehen, durch was der folgende werte Type definiert wird... vielleicht durch das "€"?

Erst mal danke für die Antworten..
( :pale: Ich werde wenn ich scheitere auf die oben gennanten varianten zurückgreifen :roll: )

cya & thx
Corelgott

Corelgott 2. Jun 2004 10:59

Re: Registry... Mal wieder.....
 
@teebee


hmmm Feinkost!

Ok nu hab ich schon mal einen blassen Schimmer wie es darin so aus sieht....!!
Das Ding hilft mal wirklich weiter... (Muss das dann ja nur noch verstehen und code :pale: )

Na ja...
getreu dem Motto: "Einfache Sachen kann ja jeder machen!" :gruebel: :zwinker:

thx
Corelgott

Basilikum 2. Jun 2004 12:23

Re: Registry... Mal wieder.....
 
man nehme Regedit, selektiere HKLM, Datei -> Struktur laden -> gewünschtes NTUSER.DAT wählen, irgend einen Schlüsselname eingeben, den es noch nicht gibt in HKLM... sodann ist die alte Registry unter HKLM\<Schlüsselname> verfügbar (allerdings nur Zweige aus dem ehemaligen HKCU)

Corelgott 2. Jun 2004 12:31

Re: Registry... Mal wieder.....
 
@Basilikum

siehe Seite eins der Diskussion.

thx
Corelgott

jfheins 16. Jun 2004 21:04

Re: Registry... Mal wieder.....
 
Also, ich habe Outlook 2000, und bei mir werden die E-Mails nicht in der Registry gespeichert (Klar oder ??? was sollen meine mails denn in der regisry also im RAM??? will alle emails ununterbrochen lesen ?)
Bei mir werden die aktuellen E-Mails in der Datei

C:\Dokumente und Einstellungen\[NAME]\Lokale Einstellungen\Anwendungsdaten\Microsoft\Outlook\ou tlook.pst

gepeichert ... oder dank :thuimb: Auto-Archivierung (Wo hat dieses Sch***-Outlook meine E-Mails hinversteckt ????) auch in

C:\Dokumente und Einstellungen\[NAME]\Lokale Einstellungen\Anwendungsdaten\Microsoft\Outlook\ar chive.pst (oder so ähnlich ...)

Das sind sog. Persönliche-Ordner-Dateien, die man in outlook importieren kann ...

Corelgott 17. Jun 2004 12:58

Re: Registry... Mal wieder.....
 
@jfheins...

Hmm... ich versuche auch nicht die eMails ab zu speichern... die packt oe in einen ordner ganz fein säuberlich weg. Mir geht es um die eMail-KONTEN!!!! Also, dass was dank ms die Endung *.iaf bekommen hat! Nun ja, die stehen garantiert in der registry....

Außerdsem zwischen Outlook & Outlook Express leigen Welten!!! Das eine kann nur *.pst das andere leget für jeden ordner ne Datei an usw....

aber trotzdem danke...

cya
Corelgott


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:20 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