![]() |
registry-exporte (*.reg) einlesen?
ich habe die aufgabenstellung, registryexporte sowohl selbst zu machen als auch vernünftig, z.b. in eine treeview, einzulesen.
da weder tregistry noch treginifile vernünftige exportmethoden haben, seh ich mir gerade die struktur von *.reg-exporten an. die is ja eigentlich klar - aber es ist eine heidenarbeit, so etwas in eine treeview einzulesen, da ja die unterstrukturen einzeln rumliegen. deshalb zwei fragen: 1. gibt es bereits eine komponente, die so etwas kann? gerne auch direkt aus der registry lesen, nur im- und export sollte halt möglich sein. und zwar import auch so, dass es nicht nur direkt in die registry, sondern erst einmal in einen tree kommen kann. 2. gibt es eine gute möglichkeit, in eine treeview direkt den pfad 'X\Y\Z' einzulesen, ohne erst x,y,z herausparsen und einzeln eintragen zu müssen? ich muss ja auch noch überprüfen, ob ich einen neuen zweig anlegen oder in einen bereits vorhandenen schreiben muss. |
Re: registry-exporte (*.reg) einlesen?
*push*
niemand ne idee? ich kann ja auch selber was machen, aber wenns schon was gibt, wäre das ja schön zu haben..... |
Re: registry-exporte (*.reg) einlesen?
Vergleich mal eine INI-Datei mit einer REG-Datei :zwinker:
Damit hättest du die Schlüsselnamen von den Werten getrennt. |
Re: registry-exporte (*.reg) einlesen?
richtig. sehr richtig, phistev. Note fünf wegen themaverfehlung :mrgreen:
das is mir klar, aber ich krieg da ja die strukturen immer einzeln. was ja auch klar ist. sprich eine struktur HKEY_LOCAL_MACHINE\STH und einmal HKEY_LOCAL_MACHINE\STH\ONEMORE und dann noch HKEY_LOCAL_MACHINE\STH\TWO usw. usf. und die muss ich halt jetzt einzeln in ein tree ähnliches gebilde kriegen. sprich, ich hab den vollen pfad, und muss den auf einen relativen pfad abbilden oder so. und wie oben gesagt: Zitat:
|
Re: registry-exporte (*.reg) einlesen?
Hallo Lukas,
Zitat:
Du wirst nämlich wühlen müssen - fürchte ich. Allerdings kann ich nicht sehen, dass du schrecklich tief wühlen müsstest - um beim Bild zu bleiben. Grüße vom marabu |
Re: registry-exporte (*.reg) einlesen?
tief nicht, aber ausdauernd... na gut... ich komm dann in zwei jahren wieder wenn ichs geschafft hab *seufz* ;)
|
Re: registry-exporte (*.reg) einlesen?
Bei
![]() Anhand dieses Beispiels wirst du sicherlich auch die Darstellung einer .reg-Datei hinbekommen. PS: Ich weis nicht, ob TIniFile mit den .reg-Dateien von 2000/XP umgehen kann, da dies Unicode-Dateien sind, ansonsten benutzt du halt TWideStringList. |
Re: registry-exporte (*.reg) einlesen?
das könnte die Uber-Lösung sein.
muss jetzt mal off, aber wenn das ding tut, was es verspricht, kriegst du ein ganz fettes karma von mir! :love: |
Re: registry-exporte (*.reg) einlesen?
Zitat:
Zitat:
:arrow: Die Datei beginnt mit der Versionsangabe des Reg-Edits. Für alle Fälle kannste ja auch alle Zeilen bis zum ersten '[' wegschnippeln oder in nem zusätzlichen Info-Memo anzeigen lassen. :arrow: Der "Pfad" zum Schlüssel wird als INI-Section gespeichert. D.h. du brauchst nur die Sections raussuchen und diese dann am '\' trennen, um den nächsten Unterschlüssel zu bekommen. Das kannst du dann in ein dynamisches Array speichern und das dann der Reihe nach durchlaufen. Existiert der gewünschte Schlüssel, dann wird der entsprechende TTreeNode temporär gespeichert und man guckt nach dem nächsten. Existiert ein Schlüssel noch nicht, so wird ein entsprechender TTreeNode erzeugt. Dabei fällt mir auf, dass man das vielleicht besser per Rekursion lösen könnte, anstatt mit Schleife und dyn. Array. Obwohl es sich hier nicht viel nehmen sollte, denke ich. :arrow: Und zu den Werten: Das '@' steht immer für den Standardwert. Ansonsten stehen alle Schlüsselnamen in Anführungszeichen. Danach kommt das '='. Steht nun ein '"', so ist es ein normaler String. Steht da DWORD, so ist es ein selbiger. steht da 'hex:', dann ist es ein Hexadezimalwert. Steht 'hex(7):', dann ist es ein Multiline-String (stichwort TMemo) und bei 'hex(2):' diese Extended-Zeichenkette (ich vermute mal, die lässt einfach größere Längen zu, als das "normale" REG_SZ). Wichtig ist bei den Hexen, dass die durch Komma getrennt sind und am Ende der Zeile ein ',\' steht. So, daraus sollte sich eigentlich (mehr oder weniger) einfach was zusammenschneidern lassen. Ich denke n bisschen Tipparbeit wirste bei den Hex-Zeugs haben, aber ansonsten gehts scho, denn im Prinzip is das doch alles bloß Str_Replace-Arbeit. mfg, mh166 |
Re: registry-exporte (*.reg) einlesen?
nein, du verstehst das nicht ganz! Das Format ist mir absolut klar! aber ich muss so vorgehen:
erstmal sections = pfade holen (geht ja relativ einfach, mit den Inidatei) jetzt habe ich hundert strings, die so aufgebaut sind: A\B,A\B\C,A\B\C\D.... also nehm ich den ersten string, und erstelle in meiner treeview Überknoten->A->B jetzt komt der nächste dran: erst auseinanderbauen, so dass ich ('A','B','C')(=stringlist) bekomme. schauen: gibt es A schon? wenn ja, node:=A; wenn nein: node:=treeview.add(node,'A'), wobei auf den überknoten zeigte, und jetzt auf A zeigt. jetzt schaue ich, ob ich weiter verzweigen muss. ja, muss ich, die stringlist geht noch weiter. also schauen: gibt es A->B schon? wenn ja, node:=B; wenn nein: node:=treeview.add(node,'B'); und das ganze dann möglichst rekursiv und fehlerfrei, und werte hab ich überhaupt noch keine eingetragen. -> N Haufen Arbeit!! :stupid: Und die Lösung des ganzen: TNRegView. funzt wunderbar. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 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