d00mer
Goto Top

Auslesen von unbekannten Registry Subkeys via Kommandozeile

Hi zusammen!

Mein Problem ist das ich aus der Registry einige Schlüssel auslesen muß, da diese
für eine Weiterverarbeitung verwendet werden sollen. Die Schlüssel sind leider
unbekannt und genau da ist mein Problem ;)

Ein Beispiel:

Unter HKCU\Software\Software1\Unterpunk1\ gibt es mehrere Schlüssel, deren Namen
nicht bekannt sind. Das Programm muß in der Lage sein alle Unterschlüssel in
HKCU\Software\Software1\Unterpunkt1\Unterpunkt2

auszulesen.
Mittels "reg query HKCU\Software\Software1\Unterpunkt1\Unterpunkt2" lese ich mir
die Keys aus, was dann so aussieht:


! REG.EXE VERSION 3.0

HKEY_CURRENT_USER\Software\Software1\Unterpunkt1\Unterpunkt2

HKEY_CURRENT_USER\Software\Software1\Unterpunkt1\Unterpunkt2\ScHLÜSsELNUMMER01

HKEY_CURRENT_USER\Software\Software1\Unterpunkt1\Unterpunkt2\ScHLÜSsELNUMMER55


Und genau die "schlüsselnummern" sind für mich interessant, mehr brauch ich nicht.
Ich weiß leider nur nicht genau wie ich den Rest "wegstripe" :/

Das es eine for IF Anweisung ist, ist mir klar, aber leider komm ich da nicht weiter.
Hoffe das mir einer helfen kann,

Gruß, Daniel

Content-ID: 31196

Url: https://administrator.de/contentid/31196

Ausgedruckt am: 05.11.2024 um 06:11 Uhr

miniversum
miniversum 26.04.2006 um 13:20:40 Uhr
Goto Top
Wenns immer nach dem sechsten / ist versuchs mal so:

@echo off
FOR /F "tokens=1-6 delims=/" %%a in (Ausgelesen.reg) do echo %%f >> Schluesselnr.txt

miniversum
Biber
Biber 26.04.2006 um 13:23:32 Uhr
Goto Top
Moin D00meR,

am CMD-Prompt:
for /f %i in ('reg query HKCU\Software\Software1\Subkey1\Subkey2') do @for /f "tokens=6 delims=\" %a in ("%i") do @echo %a  

Gruß
Biber
d00meR
d00meR 26.04.2006 um 13:29:56 Uhr
Goto Top
Leider nein,

es sind backslashes, keine slashes und nach dem 5. "\" sind die subkeys für mich interessant.
Ich habs probiert zu ändern, aber leider gehts nicht.

Der Key ist:
HKEY_CURRENT_USER\Software\12345\12345\12345\UNDDASHIERJETZTBRAUCHICH face-wink

Gurß, Daniel
d00meR
d00meR 26.04.2006 um 13:38:09 Uhr
Goto Top
Danke! Auf dich hab ich gewartet. Und wie immer 1a Lösung ;)

Gruß, Daniel
sysad
sysad 26.04.2006 um 14:08:11 Uhr
Goto Top
Das kann ich auch gut brauchen! Danke, gibt 5 Punkte von mir und ein virtuelles Freibier face-wink
d00meR
d00meR 26.04.2006 um 14:21:42 Uhr
Goto Top
Hmm... die Ausgabe ist ja nun "perfekt" und sieht so aus:

Key1
Key85
Key 99

Alles schön und gut. Wie kann ich nun die ausgegebenen Werte wieder einlesen damit ich
damit weiter arbeiten kann?
Ich stell mir das irgendwie so vor:

reg add HKCU\Software\Software1\Subkey1\Subkey2\EINGELESENESHIER\andererkey /v "blablabla" /t REG_DWORD /d dword:00000000 /f


Ich muß damit ein paar benutzerspezifische Daten ändern und die sind leider von System
zu System unterschiedlich, deshalb das "komplizierte" Einlesen vom Biber ;)

Gruß, Daniel
Biber
Biber 26.04.2006 um 14:54:18 Uhr
Goto Top
Na ja, d00mer,

im Prinzip würde ich so vorgehen:
a) wenn variable/spezifische "Reg add"-Ergänzungen je Schlüssel erfolgen sollen:
- den Oneliner ergänzen um eine Umleitung in Datei ">>AllSubKeys.txt"
- in der AllSubkeys.txt dann jeweils eine 2. (3., 4.,.n-te) Spalte anfügen mit den Reg-Ergänzungen. Musst Du dann ja auf jeden Fall manuell per Editor machen, wenn es keine automatisierbare Regel gibt.
-dann wieder per FOR /F -Anweisung diese REG-Add-Zusätze reinschreiben lassen.

b) wenn es KEINE spezifischen Reg-Add-Ergänzungen/Änderungen sind, sondern alle Schlüssel gleich betreffen:
- um den Oneliner oben noch eine weitere FOR /f ..in Do -Anweisung außen herum:

FOR /f in %x in ('denOnelinerVonOben') do reg add HKCU\Software\Software1\Subkey1\Subkey2\%x\andererkey /v "blablabla" /t REG_DWORD /d dword:00000000 /f

Oder es in einem Batch zur besseren Lesbarkeit auf ein paar Zeilen auseinanderziehen.

So wäre die Skizze.

Gruß Biber
...der sich erstmal das virtuelle Freibier munden läßt...