Registry Wert auslesen und vergleichen

Mitglied: Welnex

Welnex (Level 1)

05.07.2006, aktualisiert 30.11.2006, 14437 Aufrufe, 6 Kommentare

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
6 Kommentare
Mitglied: Metzger-MCP
05.07.2006 um 15:52 Uhr
Hm ist interresannt, möchte ich auch gerne wissen

MFG Uwe
Mitglied: Biber
05.07.2006 um 23:32 Uhr
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:
https://www.administrator.de/Registry_ohne_reg.exe_bearbeiten.html

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
Mitglied: Biber
03.08.2006 um 20:43 Uhr
@Welnex
Moin Steffen, ist Deine Frage noch offen oder hast Du anderswo eine Antwort bekommen?

Gruß vom MOD
Biber
Mitglied: Welnex
04.08.2006 um 08:10 Uhr
Hi,

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

Gruß
Steffen
Mitglied: Biber
04.08.2006 um 10:12 Uhr
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]
:: Beispielaufruf am CMD-Prompt...

Gruß
Biber
Mitglied: Biber
30.11.2006 um 06:37 Uhr
Lang genug gewartet... Beitrag geschlossen.