Supportnet Computer
Planet of Tech

Supportnet / Forum / BS-Sonstige

Registry einträge auslesen





Frage

Kann ich rigendwei registry einträge auslesen und inne Variable speichern?

Antwort 1 von Dummschwätzer-schon_regst

JA !! aber nicht meine °;-)


Antwort 2 von Undertaker

Hi,

ja, mit der REG.EXE (für Windows NT4, 2k, XP und 2k3).
Für Windows NT4 ist die REG.EXE im Resource Kit, für Windows 2000 auf der CD im Ordner Tools (SETUP starten) und in Windows XP sowie 2k3 ist sie Bestandteil des BS.

Gruß
Undertaker

Antwort 3 von dd

Hi

also ist meine schuld, ich hab zu wenig angaben gemacht (hatte es eilig)..

ich möchte das auslesen mit einer Batch datei machen, deshalb auch dos-forum.

Ist das irgendwie möglich??
Danke!



Antwort 4 von Undertaker

Hi,

Du kannst reg.exe aus einer Batchdatei aufrufen, Parameter übergeben und die Ausgabe auswerten. Aber Du hast leider immer noch nicht geschrieben, unter welchem BS Du das Skript verwenden möchtest...

Oder schaue Dir mal den Interpreter KIXTART an. Den gibt es als 16- und 32-Bit Version. Mit der Funktion READVALUE("subkey", "entry") kann man ebenfalls den Inhalt eines Wertes auslesen.

Gruß
Undertaker

Antwort 5 von dd

Hi!

ich benutze WinXP und möchte die einträge dann gleich in eine Variable übergeben!

Wenn ich das in einer batch datei mache, wie lauten dann die parameter für reg.exe??

Danke!

Antwort 6 von Undertaker

Hi,

ich habe eben nochmal etwas mit REG.EXE getestet. Leider werden Zeichenketten nicht mit Anführungszeichen ausgegeben, was die weitere Verarbeitung sehr schwer macht.

Mit KIXTART (hab´s mit der aktuellen V4.22 getestet) ist das aber kein Problem:

test.bat
KIX32.EXE test.kix
ECHO Wert von TEST=%TEST%
test.kix
$Value = ReadValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ProductName")
If @ERROR = 0
    SETL "TEST=$Value"
Endif


Gruß
Undertaker

Antwort 7 von dd

geht das auch anderst??

weil da muss man dann immer noch die KIX32.EXE mitkopieren und dass find ich umständlich...

oder bekommt man das irgendwie in eine datei?

DankE!

Antwort 8 von Undertaker

Hi,

das mit der KIX32.EXE ist meines Erachtens die einfachste Lösung. Das Script ist kurz, die KIX32.EXE muß immer kopiert werden und sie ist kompatibel von Win9x bis WinXP.

Ob die REG.EXE unter Win9x/ME funktioniert, habe ich noch nicht ausprobiert, aber auf Win2k muß sie auch kopiert (oder vorher installiert) werden.

Bei der REG.EXE besteht außerdem das Problem, das der Inhalt eines Wertes nicht so einfach ausgelesen werden kann, wenn der Name oder der Inhalt des Wertes Leerzeichen enthält:
C:\>reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "ProductName"

! REG.EXE VERSION 2.0

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
    ProductName REG_SZ  Microsoft Windows 2000
C:\>

Mit | FINDSTR kann man die Zeile herausfiltern:
C:\>reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "ProductName" | FINDSTR "ProductName"
    ProductName REG_SZ  Microsoft Windows 2000
C:\>

Aber da Name und Typ des Wertes ebenfalls in der Zeile stehen, ist ohne großen Aufwand nicht möglich mit FOR /F nur den Inhalt aus der Zeile zu extrahieren, wenn der Name oder der Inhalt des Wertes Leerzeichen enthält:
C:\>reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "ProductName" | FINDSTR "ProductName" >test.txt

C:\>FOR /F "tokens=1,2,3" %a IN (test.txt) DO SET XYZ=%c
C:\>SET XYZ=Microsoft
C:\>DEL test.txt
C:\>


Man könnte nun anfangen x Tokens auszulesen, zu prüfen, in welchem Token der Typ des Wertes steht und dann alle nachfolgenden Tokens mit Leerzeichen wieder aneinanderhängen, aber das ist nun doch etwas sehr umständlich. Aber wenn Du möchtest, kannst Du das gerne programmieren...

Gruß
Undertaker

Antwort 9 von dd

OK Habs hinbekommen...

wens interresier..so gehts..

@echo off
echo @echo off >> rege.bat
echo if %%1'==' goto end >> rege.bat
echo set /a s=%%s%%+1 >> rege.bat
echo set a%%s%%=%%1 >> rege.bat
echo :end >> rege.bat
reg query "HKEY_CURRENT_USER\Software\AndreasBauer" /v "Color" | FINDSTR "Color" >> reg.txt
for /f "tokens=3*" %%i in (reg.txt) do call rege %%i%%j
color %a1%
pause
del rege.bat
del reg.txt


hier isses ein beispiel mit den Colors...

Dnake nochmal!

Antwort 10 von Undertaker

Hi,

ah, den * für Tokens kannte ich noch nicht...

hab´s noch etwas verfeinert:

test.bat
@echo off
call ReadKey.bat "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" "ProductName"
echo ReadKey=%ReadKey%
pause
ReadKey.bat
@echo off
echo @echo off >ReadKeyTmp.bat
echo set ReadKey=%%1 >>ReadKeyTmp.bat
echo :next >>ReadKeyTmp.bat
echo shift >>ReadKeyTmp.bat
echo if %%1'==' goto end >>ReadKeyTmp.bat
echo set ReadKey=%%ReadKey%%%%1 >>ReadKeyTmp.bat
echo goto next >>ReadKeyTmp.bat
echo :end >>ReadKeyTmp.bat
reg query %1 /v %2 |findstr %2 >ReadKeyTmp.txt
for /f "tokens=3*" %%i in (ReadKeyTmp.txt) do call ReadKeyTmp.bat %%i %%j
del ReadKeyTmp.bat
del ReadKeyTmp.txt


Gruß
Undertaker


Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: