Registry Keys auslesen, schreiben, löschen mit cmd-datei?!

rethus

Erfahrenes Mitglied
Hallo,

ich habe ein Programm, welches eigentlich nicht auf dem USB-Stick läuft.
Nun habe ich mit viel Tüftelei alle Registry-Einträge herausgefunden, die benötigt werden, um das Programm auf einem USB-Stick lauffähig zu machen.

Eine CMD-Datei, die vom USB-Stick gestartet werden muss, prüft erst, als welches Laufwerk (d:, E: etc.) der Stick eingebunden wurde.
Nachdem das festgestellt wurde, ließt mein CMD-Programm die Registry-Datei ein, die alle benötigten Schlüssel enthält, und ersetzt einen Platzhalter gegen das aktuelle Laufwerk:
Code:
change registryKeys.reg /FROM "z:" /TO "%LW%:" /TEXT > nul

Nachdem also die Vorlagendatei mit dem aktuellen Laufwerksbuchstaben aktualisiert wurde, füge ich die Schlüssel in die Registry ein:
Code:
regedit.exe /s registryKeys.reg

Was ich wissen möchte:
Das oben beschriebene Verfahren trägt die Keys zwar schön ein, aber ich kann Sie derzeit nicht deinstallieren, oder überprüfen, ob die Keys schon für ein anderes Laufwerk bestehen.

Hat jemand einen Tipp, wie ich prüfen kann, ob ein bestimmter Registry-Key-Eintrag vorhanden ist, damit ich die Installation entweder abbrechen kann, oder den bestehenden key gegen den neuen ersetzen kann?
 
So, die mMöglichkeit habe ich gefunden, jetzt muss ich es nur noch hinbekommen, das ich via Schleife auslese, ob ein Key vorhanden ist, wenn einer vorhanden ist, auf welches laufwerk er verweist, und dass er bei bedarf die Laufwerksbuchstaben ändert, oder die Keys ganz löscht.

Die Lösung war übrigens
Code:
reg QUERY
 
Also die CommandShellist dafür weniger geeignet. Schau dir mal die neue Windows PowerShell an. Damit geht das, was du willst erheblich einfacher.
 
Wichtig ist, das es abwärts-kompatibel ist. Also win98, xp etc.

Ich bin leider auch nicht ganz so fit in batch-programmierung.
Kann mir vielleicht jemand ein kurze schleife zeigen:
  1. wie ich den Wert des Schlüssels auslesen,
  2. das Laufwerk aus dem String herauslesen
  3. gegen das neue Laufwerk austauschen
  4. und den Wert (bzw. Schlüsselnamen) wieder setzen kann?

Es gibt da zwei varianten.. einmal ist der Key mit Laufwerksstring belegt:
Code:
HKLM\Software\Microsoft\Windows\CurentVersion\SharedDlls
"z:\\testprogramm\test.exe" = dword:0000000001
und zweitens:
Code:
HKLM\Software\testprogramm\
"creator" = "test"
"value" = "z:\\testprogramm\test.bat"
 
Hi,

unter Windows NT (NT 4.0 - Vista) würde das auch mit Batchbefehlen funktionieren, da die Syntax kryptisch, aber sehr mächtig ist (bei aktivierter Erweiterung des Kommandoprozessors, was Standard ist => cmd /?). Allerdings nicht unter Windows 98. Diese Befehle stehen dort nicht zur Verfügung. Aus diesem Grund müsstest Du auf was anderes ausweichen.

Tschau Lutz
 

Neue Beiträge

Zurück