| 

.NET C# Java Javascript Exception

2
Ich hab folgendes Problem: Mein aktuelles Programm sucht ein paar Registrywerte / -pfade nach bestimmten Suchmustern und listet sie mir bisher nur auf. Diese Registrywerte sollen dann noch gelöscht werden (also sowas wie ein Cleaner, halt nur für ein bestimmtes Programm ausgelegt). Doch was passiert, wenn es hinterher Probleme gibt? Das beste wär natürlich, ich könnte ohne große Änderung des Quelltextes gewisse Pfade einfach "exportieren" und wenn es Probleme gibt, die Registrydatei importieren.
Das exportieren funktioniert mit regedit über den Befehl /e. Soweit so gut. Nun sind aber meine Registrypfade irgendwo verteilt. Und da ich alle Pfade in eine Datei hätte, funktioniert der Befehl nicht einfach so, denn jedesmal wenn ich ihn aufrufe, würde meine Datei überschrieben.

Bisher seh ich zwei Möglichkeiten. Entweder eine Menge regedit /e Befehle aufrufen und alle Dateien am Schluss zusammenfügen, oder schon beim Suchen so eine Datei zu erstellen, das aber per Quelltext.

Gibt es da sonst noch andere Möglichkeiten?
26.08.2011
starki 603 1 8
4 Antworten
4
Die Werte und ihre Typen liest du zum Beispiel so aus:
Microsoft.Win32.RegistryKey regKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software", true);
object value = regKey.GetValue("nameDesEintrages");
Microsoft.Win32.RegistryValueKind keyType = regKey.GetValueKind("nameDesEintrages");

Was die einzelnen Typen (RegistryValueKind) bedeuten, kannst du z.B. hier sehen.

Wie du die Werte dann in eine Datei schreibst, dafür gibt es mehrere Möglichkeiten (Binärdatei, Textdatei, xml...). Auf jeden Fall solltest du sie so reinschreiben, dass du sie wieder lesen kannst :-)
26.08.2011
KN 1,7k 1 8
KN 1,7k 1 8
0
Hallo,

wahrscheinlich ist es für dich da am einfachsten wenn du dir selbst die Registryeinträge speicherst.
Suchen musst du sie ja auch, dann ist das Speichern danach nicht so ein großer Aufwand.
Es ist im Prinzip ja nur eine Liste von Einträgen (also nichts spezielles)
Dann kannst du später mit deiner Datei alle Einträge durchlaufen und sie selbst wiederherstellen.

Aber das rumspielen in der Registry ist immer etwas gefährlich.. Aber das brauche ich dir ja nicht zu sagen =)

Gruß
Michael
26.08.2011
michlG 1,7k 1 5
michlG 1,7k 1 5
0
Eines ist mir grad noch aufgefallen. Es gibt ja in der Registry mehrere verschiedene Arten von Typen: Strings, DWords, Binaries, REG_EXPAND_SZ, REG_MULTI_SZ. Wie lese ich die dann aus und schreibe sie richtig in eine Datei.

Kennt sich da jemand aus? Meine erste Suche im Internet hat noch nichts konkretes ergeben :(
26.08.2011
starki 603 1 8
0
Hallo,
wenn ich dich richtig verstanden habe, listest du die Werte ja bereits auf. Dann ist es doch ganz leicht, eine REG-Datei zu erstellen. Das ist eine einfache Text-Datei, wie sie beim Export mit dem Regedit.exe erstellt wird. Hier mal ein Beispiel:
REGEDIT4

[HKEY_CURRENT_USER\Software\Mozilla\Firefox\Crash Reporter]
"Email"=""
"IncludeURL"=dword:00000001
"EmailMe"=dword:00000000
"SubmitCrashReport"=dword:00000001

[HKEY_CURRENT_USER\Software\Mozilla\Firefox\Extensions]

Im Namen der Datei kannst du ja einen TimeStamp einbauen, damit du weißt, von wann die Datei war. Sollten dann irgendwann Probleme auftreten, kannst mit mit einem einfachen Doppelklick auf die Datei, die ursprünglichen Werte auch wieder herstellen. Übrigens: Wenn du den Schlüsseln in der Datei ein Minus voranstellst, kannst du mit einer REG-Datei auch Werte und Schlüssel löschen.
Deine Frage nach den binären Einträge müsste damit ja auch beantwortet sein.

Liebe Grüße, Tom
28.08.2011
Metal-Frog 946 1 7

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH