![]() |
Windows Registry Datei als text Laden???
Hallo Leute,
ich habe folgendes Problem, ich möchte über eine funktion an zwei verschiedenen Stellen in der Registry ein paar Schlüssel exportieren und diese danach zusammen in eine Datei schreiben, damit man mit einem klick alle Schlüssel wieder importieren kann. Das exportieren der einzelnen Schlüssel habe ich schon hinbekommen, jedoch weiß ich nicht wie ich nun die beiden *.Reg Dateien zusammen bringen soll. Ich wollte es mit TStringlist machen, jedoch kann ich die *.Reg Dateien nicht einfach mit Stringlist1.LoadFromFile(...\export1.Reg); in eine Stringlist laden, da eine Registry Datei keine normale Textdatei ist!!! Nun die Frage: Weiß jemand wie ich eine Registry Datei in z.B. eine Stringlist (oder ähnliches) geladen bekomme? Danke schon mal im vorraus. ![]() Smile |
Re: Windows Registry Datei als text Laden???
Hi,
erstmal Herzlich Willkommen in der Delphi-PRAXiS :party: :dp: Zum Thema: eine REG-Datei ist durchaus eine ganz simple Textdatei:
Code:
Das wäre mal so der typische Aufbau bzw. Inhalt einer *.reg-Datei...
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\...] "xyz"="wert" ... Kannst sie also auch in eine StringList laden :) Ne genaue Beschreibung der REG-Dateien findest Du unter ![]() ....Das stimmt so nicht ganz :oops: --->> Obiges gilt nur fürs Win9x/NT4 -Reg-Format!! Hier werden noch ANSI-Strings benutzt, bei den aktuellen Versionen weren Widestrings benutzt! (s.u.) Gruß Stephan :dance: edit: Tippfehler ohne Ende :cyclops: |
Re: Windows Registry Datei als text Laden???
Zitat:
In der Unit JclWideStrings aus der ![]() Damit lässt sich wie mit einer TStringList arbeiten. Diese Klasse kann auch mit dem 1. Wort der Datei richtig umgehen.
Delphi-Quellcode:
Wenn die Datei mit BOM_MSB_FIRST beginnt, dann werden alle Widechars in der Byteanordnung gedreht.
const
BOM_LSB_FIRST = WideChar($FEFF); BOM_MSB_FIRST = WideChar($FFFE); |
Re: Windows Registry Datei als text Laden???
Hiho,
@Steve: danke für die schnelle antwort. Aber wenn ich versuche die reg-Datei in eine Stringlist zu laden
Code:
Habe ich in meiner Stringlist nur einen Eintrag und dieser ist 'ÿþW'
Stringlist1.LoadFromFile(...\export1.Reg);
ich habe die Reg-Datei auch mal mit dem Editor geöffnet und da sind (logischer weise) viel mehr Einträge. Zudem habe ich auch mal von hand eine *.txt Datei erstellt und diese mit LoadFromFile in eine Stringlist geladen, dass hat Problemlos funktioniert. |
Re: Windows Registry Datei als text Laden???
er hats dir doch grad erklärt, das regedit die .reg files im UNICODE format speichert.
also musst du die auch mitner unicodefähigen stringlist laden - TWStringlist oder wie die klasse eben hies ein posting über mir was auch gehen sollte
Delphi-Quellcode:
is aber ungetestet :)
function LoadRegFile(const sFileName: string; var xStringlist: TStringlist): boolean;
var xMS: TMemoryStream; sBuf: PWideChar; begin Result := False; if not FileExists(sFileName) then Exit; xMS := TMemoryStream.Create; xMS.LoadFromFile(sFileName); GetMem(sBuf, xMS.Size); xMS.Read(sBuf, xMS.Size); xStringlist.Text := WideCharToString(sBuf); FreeMem(sBuf, xMS.Size); FreeAndNil(xMS); Result := True; end; var xSL: TStringlist; begin xSL := TStringlist.Create; if LoadRegFile('c:\blah.reg', xSL) then begin // ... FreeAndNil(xSL); end; end; |
Re: Windows Registry Datei als text Laden???
Zitat:
Kommt ganz drauf an, wie man die Reg-Datei exportiert hat. Es muss nicht zwingend Unicode sein. |
Re: Windows Registry Datei als text Laden???
aufnem win2k/xp schon, es sei denn man wählt win9x/nt4 ....
wie auch immer, das lässt sich ja alles herausfinden |
Re: Windows Registry Datei als text Laden???
Hallo,
habe es jetzt versucht mit barf00s Quellcode, bekomme dort aber immer eine Zugriffsverletzung an der Stelle
Delphi-Quellcode:
Greetz Jonny5K
xMS.Read(sBuf, xMS.Size);
|
Re: Windows Registry Datei als text Laden???
Moin Jonny,
wenn ich das richtig sehe fehlt da ein ^ Also:
Code:
xMS.Read(sBuf[color=red][b]^[/b][/color], xMS.Size);
|
Re: Windows Registry Datei als text Laden???
Hiho,
hab das gerade mal probiert und jetzt gehts ![]() Laughing. Damit wäre ich auch soweit zufrieden *g*, nur noch eine andere Frage hätte ich jetzt. Ist das
Delphi-Quellcode:
in
sBuf^
Delphi-Quellcode:
jetzt eine Art Zeiger?
xMS.Read(sBuf^, xMS.Size);
Danke an alle dir mir geholfen haben :-) Greetz Jonny5K |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:36 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