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-Key: 35436

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

Printed on: April 19, 2024 at 21:04 o'clock

Member: Metzger-MCP
Metzger-MCP Jul 05, 2006 at 13:52:42 (UTC)
Goto Top
Hm ist interresannt, möchte ich auch gerne wissen

MFG Uwe
Member: Biber
Biber Jul 05, 2006 at 21:32:28 (UTC)
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
Member: Biber
Biber Aug 03, 2006 at 18:43:00 (UTC)
Goto Top
@Welnex
Moin Steffen, ist Deine Frage noch offen oder hast Du anderswo eine Antwort bekommen?

Gruß vom MOD
Biber
Member: Welnex
Welnex Aug 04, 2006 at 06:10:37 (UTC)
Goto Top
Hi,

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

Gruß
Steffen
Member: Biber
Biber Aug 04, 2006 at 08:12:01 (UTC)
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
Member: Biber
Biber Nov 30, 2006 at 05:37:55 (UTC)
Goto Top
Lang genug gewartet... Beitrag geschlossen.