welnex
Goto Top

Registry Wert auslesen und vergleichen

Hi,

da in unserem Unternehmen hauptsächlich Vertriebler mit NB arbeiten, habe ich keine Möglichkeit eine zentrale Administration bei uns durchzuführen.
Jetzt möchte ich aber die Rechner überprüfen welche Softwareversion unserer AV-Software installiert ist.

Jetzt habe ich verständlicherweise keine Lust jeden User anzurufen und ihn nachsehen zu lassen. Daher möchte ich einen Batchjob schreiben, der das für mich übernimmt.

Der Batchjob soll an einer von mir definierten Stelle einen Schlüsselauslesen und dann mit einer Variabel vergleichen. Je nach Ergebnis, soll mir eine Mail geschickt werden.
Das Auslesen gelingt mir mit reg query und auch das Versenden der Mail habe ich schon realisiert, nur wie kann ich den ausgelesenen Wert vergleichen

IF "HKEY_Local_Machine\Software\Bla\Blub\Verison" == 6.01

funktioniert genau so wenig wie

reg query "HKEY_Local_Machine\Software\Bla\Blub\Verison" = $test

Vielen Dank für die Hilfe
Steffen

Content-ID: 35436

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

Ausgedruckt am: 22.11.2024 um 19:11 Uhr

Metzger-MCP
Metzger-MCP 05.07.2006 um 15:52:42 Uhr
Goto Top
Hm ist interresannt, möchte ich auch gerne wissen

MFG Uwe
Biber
Biber 05.07.2006 um 23:32:28 Uhr
Goto Top
Moin Steffen,

zwei mögliche Ansätze sind wie folgt:
a)
- Auslesen eine (größeren) Registry-Hives in eine Temp-Datei
- Finden der relevanten Zeile mit dem gesuchten Wert mittels Find
- Zerlegen der Zeile mit eine FOR /F ..IN..DO Anweisung.
b)
- Auslesen einer Zeile mit REG QUERY ...[exakter RegKey]
- Zerlegen der Zeile mittels FOR /F..In..DO-Anweisung

Der Fall a) ist von Markus "nullplan001" Wichmann hier behandelt worden:
Registry ohne reg.exe bearbeiten

Den Weg b) habe ich z.B. im Tutorial "Workshop Batch for Runaways III - Umgang mit Datums- und Zeitvariablen.." beschrieben.
Aber auch die Forumssuche nach "REG.exe Batch" sollte Dir Beispiele liefern.

Gruß
Biber
Biber
Biber 03.08.2006 um 20:43:00 Uhr
Goto Top
@Welnex
Moin Steffen, ist Deine Frage noch offen oder hast Du anderswo eine Antwort bekommen?

Gruß vom MOD
Biber
Welnex
Welnex 04.08.2006 um 08:10:37 Uhr
Goto Top
Hi,

eigentlich ist die Frage noch offen, da ich auf eine "elegantere" Lösung gehofft habe.

Gruß
Steffen
Biber
Biber 04.08.2006 um 10:12:01 Uhr
Goto Top
Moin Welnex,

na, da warte ich gespannt mit.
Ich denke nicht, dass Du da ohne Hilfsutilities etwas Elegantes hinbekommst.
Ich schaffe es jedenfalls nicht elegant... würde bestimmt zwei Zusatzzeilen brauchen, um einen Registry-Schlüsselwert zu ermitteln
Heißt, wenn ich so einen Plan wie Du hätte, dann würde ich in meinem Batch einen kleinen CALL-Block hinterlegen namens ":GetRegKey" und den jeweils vorher aufrufen, um den gesetzten Wert in der Registry zu ermitteln.

Wenn Du was Elegantes ausgeknobelt hast, poste es bitte.

Beispiel-Code Für so einen ":GetRegKey"-Block, hier mal als eigenständiger Batch, der eine GLOBALE Variable %RegVal% setzt.
[Anmerkung: Der angefragte RegKey liefert bei mir mit Reg.exe:
HKEY_CURRENT_USER\Software\Microsoft\SecurityCD
Service Pack REG_SZ 2
[Ende Anmerkung]
::-- snipp GetRegKey.bat
:: Aufruf GetRegKey.bat RegKey RegSubKey 
@echo off & (for /f "skip=4 delims=" %%i in ('reg query %1 /v %2') do for %%a in (%%i) do Set x=%%a)  
(set RegVal=%x%) && echo [Debug] RegValue von %1 %2 ist [%regVal%]
::-- snipp GetRegKey.bat
:: Beispielaufruf am CMD-Prompt...
>f:\administrator\getRegKey.bat "HKCU\Software\Microsoft\SecurityCD" "Service Pack"  

...und Ergebnis/ Output...
[Debug] RegValue von  "HKCU\Software\Microsoft\SecurityCD" "Service Pack" ist [2]  

Gruß
Biber
Biber
Biber 30.11.2006 um 06:37:55 Uhr
Goto Top
Lang genug gewartet... Beitrag geschlossen.