![]() |
Schlüssel mit allen Subkeys exportieren?
Ich versuche vergeblich den Schlüssel "Schemes" aus HKEY_CURRENT_USER\AppEvents mit allen Subkeys zu exportieren. Dazu verwende ich die von Luckie erstellte Funktion.
![]() Leider steht in der Hive-Datei nur Müll drin. Gibt es eine Möglichkeit, direkt als Reg-Datei zu exportieren? Lässt sich eigentlich diese Funktion auch für den Import portieren? |
Re: Shlüssel mit allen Subkeys exportieren?
Was heißt nur MÜll? Die Daten sind binär. Willst du sie in lesbarer Form im reg-Format, wird dir nichts anderes übrig bleiben, als die entsprechende Datei von Hand zu erstellen. Was natürlich auch bedeutet, dass du jeden Schlüssel rekursiv durchsuchen musst und jeden Wert einzeln schreiben musst. Wie so eine reg-Datei aufgebaut ist kannst du ja selber rausfinden.
|
Re: Shlüssel mit allen Subkeys exportieren?
Das muß nun wirklich nicht sein. Danke Luckie.
|
Re: Shlüssel mit allen Subkeys exportieren?
Moin!
Ähm, schon mal die Exportfunktion vom Regeditor gesehen? |
Re: Shlüssel mit allen Subkeys exportieren?
@ Sunlight7,
Die Export- bzw. Importfunktion im Editor ist mir sehr wohl bekannt. Nur kann ich vom jeweiligen Benutzer meines Programms nicht verlangen, Änderungen in der Registerdatenbank von Windows vorzunehmen. |
Re: Shlüssel mit allen Subkeys exportieren?
Man kann den Editor aber mit Paramtern reg-Dateien importieren und exportieren lassen. Ich denke das meine unser Sonnenschein. ;)
|
Re: Shlüssel mit allen Subkeys exportieren?
irgendwo hab ich mal folgendes aufgeschnappt. und ich denke das is genau das was du suchst.
Delphi-Quellcode:
procedure ExportRegistryBranch(rootsection : cardinal; Regroot,FileName : string);
var reg : TRegistry; f : Textfile; p : PChar; procedure ProcessBranch(root : string); var values,keys : TStringList; i,j,k : longint; s,t : string; begin Writeln(f); case rootsection of HKEY_CLASSES_ROOT : s := 'HKEY_CLASSES_ROOT'; HKEY_CURRENT_USER : s := 'HKEY_CURRENT_USER'; HKEY_LOCAL_MACHINE : s := 'HKEY_LOCAL_MACHINE'; HKEY_USERS : s := 'HKEY_USERS'; HKEY_PERFORMANCE_DATA : s := 'HKEY_PERFORMANCE_DATA'; HKEY_CURRENT_CONFIG : s := 'HKEY_CURRENT_CONFIG'; HKEY_DYN_DATA : s := 'HKEY_DYN_DATA'; end; Writeln(f,'[' + s + '\' + root + ']'); reg.OpenKey(root,False); values := TStringList.Create; keys := TStringList.Create; reg.GetValuenames(values); reg.GetKeynames(keys); for i := 0 to values.Count - 1 do begin s := values[i]; t := s; if s = '' then s := '@' else s := '"' + s + '"'; Write(f,StringReplace(s,'\','\\',[rfReplaceAll]) + '='); case reg.Getdatatype(t) of rdString,rdExpandString : Writeln(f,'"' + StringReplace(reg.ReadString(t) + '"','\','\\',[rfReplaceAll])); rdInteger : Writeln(f,'dword:' + IntToHex(reg.readinteger(t),8)); rdBinary : begin Write(f,'hex:'); j := reg.GetDataSize(t); GetMem(p,j); reg.ReadBinaryData(t,p^,J); for k := 0 to j - 1 do begin Write(f,IntToHex(Byte(p[k]),2)); if k <> j - 1 then begin Write(f,','); if (k > 0) and ((k mod 25) = 0) then Writeln(f,'\'); end; end; FreeMem(p,j); Writeln(f); end; else Writeln(f, '""'); end; end; reg.CloseKey; values.Free; for i := 0 to keys.Count - 1 do ProcessBranch(root + '\' + keys[i]); keys.Free; end; begin if RegRoot[Length(Regroot)] = '\' then delete(Regroot,Length(Regroot),1); Assignfile(f,FileName); Rewrite(f); Writeln(f,'REGEDIT4'); reg := TRegistry.Create; reg.Rootkey := Rootsection; ProcessBranch(Regroot); reg.Free; Close(f); end; procedure TForm1.Button1Click(Sender: TObject); begin ExportRegistryBranch(HKEY_LOCAL_MACHINE,'HARDWARE','c:\test.reg'); end; |
Re: Shlüssel mit allen Subkeys exportieren?
Eine Prozedur innerhalb einer Prozedur? Geht denn das in Ordnung?
Edit: Ja, es geht in Ordnung. Und wie könnte diese Datei wierder eingespielt werden? (Ohne Doppelklick, vielmehr aus einem Programm heraus.) |
Re: Shlüssel mit allen Subkeys exportieren?
Zitat:
|
Re: Shlüssel mit allen Subkeys exportieren?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:46 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