Thema:
Unter MS DOS überprüfen ob Registry Key existiert




Jeder kennt das Problem, man schreibt eine Bat Datei und will den Befehl nur ausführen, wenn der Registry Key existiert.



Für diesen Fall habe ich ein Beispiel:


######################################
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
reg query "HKEY_LOCAL_MACHINE\Software" 2>&1 >NUL
if !ERRORLEVEL! EQU 0 (echo exists) else (echo not exists)
######################################


Erklärung zu den einzelnen Zeilen:

SETLOCAL ENABLEDELAYEDEXPANSION
Diese Zeile ist notwendig damit die Variable Errorlevel verfügbar ist, mehr infos findet man hier:
LINK

reg query "HKEY_LOCAL_MACHINE\Software"
Mit diesem Befehl checkt man den Inhalt des Registry Keys. Man kann hier auch einzelene Values checken (siehe Hilfe unten). Den Rest der Zeile 1 zu 1 übernehmen.

if !ERRORLEVEL! EQU 0 (echo exists) else (echo not exists)
Anstelle des Befehls "echo exists" kann man dann jeden anderen Befehl ausführen, genau das gleiche gilt für "echo not exists".

Wie man sieht garnicht so schwer, wenn man weiß wie das geht.





Hilfe zu reg query bekommt man mit dem Befehl:

reg query /?


REG QUERY Schlüssel [/v [Wert] | /ve] [/s]
[/f Daten [/k] [/d] [/c] [/e]] [/t Typ] [/z] [/se Trennzeichen]

Schlüssel [\\Computer\]Vollst. Schlüssel
Computer - Remotecomputer ohne Standardeinstellungen des
aktuellen Computers. Nur HKLM und HKU sind auf
Remotecomputern verfügbar
Vollst. Schlüssel - im Format STAMMSCHLÜSSEL\Unterschlüssel
STAMMSCHLÜSSEL - [ HKLM | HKCU | HKCR | HKU | HKCC ]
Unterschlüssel - Vollst. Name eines Registrierungs-
schlüssels unter dem STAMMSCHLÜSSEL

/v Fragt einen bestimmten Registrierungsschlüssel ab. Bei
Auslassung werden alle Werte unter dem Schlüssel abgefragt.

Das Argument für diese Option ist nur mit Angabe der Option
/f optional. Hiermit wird nur in den Wertnamen gesucht.

/ve Fragt den Standardwert oder leeren Wertnamen ab (Standard).

/s Fragt alle Unterschlüssel und Werte rekursiv ab (wie dir /s).

/se Bestimmt Trennzeichen (nur 1 Zeichen) für die Datenzeichenfolge
REG_MULTI_SZ. Legt das Trennzeichen als Standardwert "\0" fest.

/f Bestimmt die zu suchenden Daten bzw. Muster.
Anführungszeichen verwenden, falls in der Zeichenfolge
Leerzeichen vorhanden sind. Standard ist "*".

/k Gibt an, dass nur in Schlüsselnamen gesucht werden soll.

/d Gibt an, dass nur in Daten gesucht werden soll.

/c Gibt an, dass bei der Suche die Groß-/Kleinschreibung beachtet
werden soll. Bei der Suche wird standardmäßig nicht zwischen
Groß-/Kleinschreibung unterschieden.

/e Gibt an, dass nur genaue Übereinstimmungen zurückgegeben werden.
Standardmäßig werden alle Übereinstimmungen zurückgegeben.

/t Gibt den Registrierungswert-Datentyp an.
Gültige Typen:
REG_SZ, REG_MULTI_SZ, REG_EXPAND_SZ,
REG_DWORD, REG_BINARY, REG_NONE
Standardmäßig werden alle Typen verwendet.

/z Ausführlich: Zeigt das numerische Äquivalent für den Typ von
Wertname an.

Beispiele:

REG QUERY HKLM\Software\Microsoft\ResKit /v Version
Zeigt den Wert des Registrierungswerts VERSION an

REG QUERY \\ABC\HKLM\Software\Microsoft\ResKit\Nt\Setup /s
Zeigt alle untergeordneten Schlüssel und Werte unter dem
Registrierungsschlüssel SETUP auf dem Remotecomputer ABC
an

REG QUERY HKLM\Software\Microsoft\ResKit\Nt\Setup /se #
Zeigt alle Unterschlüssel und Werte mit "#" als Trennzeichen
für alle Werte an, dessen Typ REG_MULTI_SZ lautet.

REG QUERY HKLM /f SYSTEM /t REG_SZ /c /e
Zeigt Schlüssel, Wert und Daten mit Groß-/Kleinschreibung und
genauen Instanzen von "SYSTEM" unter dem HKLM-Stamm für
den Datentyp REG_SZ an

REG QUERY HKCU /f 0F /d /t REG_BINARY
Zeigt Schlüssel, Wert und Daten für Instanzen von "0F" in den Daten
unter dem HKCU-Stamm für den Datentyp REG_BINARY an

REG QUERY HKLM\SOFTWARE /ve
Zeigt Wert und Daten für den leeren Wert (Standard)
unter HKLM\SOFTWARE an