Ruft die Inhalte eines bestimmten Registry-Unterschlüssels einzeln ab.
Loop, Reg, SchlüsselName , Modus
Das direkt geschriebene Wort Reg
(nicht Groß-/Kleinschreibung-sensitiv). Dieser Parameter darf weder eine Variable noch ein Ausdruck sein.
Der vollständige Name des Registry-Schlüssels wie z. B. HKLM\Software
oder %KompletterPfadDesSchlüssels%
.
Der Name muss entweder mit HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CURRENT_USER, HKEY_CLASSES_ROOT oder HKEY_CURRENT_CONFIG beginnen (oder jeweils die Abkürzung, wie z. B. HKLM). Um Zugriff auf eine Remote-Registry zu erhalten, setzen Sie wie folgt den Computernamen und einen Doppelpunkt davor: \\workstation01:HKEY_LOCAL_MACHINE
Wenn dieser Parameter weggelassen wird oder leer ist, werden nur Werte einbezogen und Unterschlüssel nicht rekursiv durchwandert. Ansonsten können Sie einen oder mehrere der folgenden Buchstaben angeben:
Veraltet: Diese Syntax ist nicht für neue Skripte empfohlen. Verwenden Sie stattdessen die neue Syntax.
Loop, RootSchlüssel , Schlüssel, UnterschlüsselEinbeziehen?, Rekursiv?
Muss entweder HKEY_LOCAL_MACHINE (oder HKLM), HKEY_USERS (oder HKU), HKEY_CURRENT_USER (oder HKCU), HKEY_CLASSES_ROOT (oder HKCR) oder HKEY_CURRENT_CONFIG (oder HKCC) sein.
Um Zugriff auf eine Remote-Registry zu erhalten, setzen Sie wie folgt den Computernamen und einen Doppelpunkt davor: \\workstation01:HKEY_LOCAL_MACHINE
Name des Schlüssels (z. B. Software\BeliebigeAnwendung). Wenn dieser Parameter weggelassen wird oder leer ist, werden die Inhalte von RootSchlüssel abgerufen.
Wenn dieser Parameter weggelassen wird oder leer ist, wird standardmäßig 0 (nur Werte werden abgerufen) verwendet. Ansonsten können Sie eine der folgenden Ziffern angeben:
Wenn dieser Parameter weggelassen wird oder leer ist, wird standardmäßig 0 (Unterschlüssel werden nicht rekursiv durchwandert) verwendet. Ansonsten können Sie eine der folgenden Ziffern angeben:
Eine Registry-Schleife ist nützlich, um mehrere Werte und Unterschlüssel einzeln abzuarbeiten. Die Werte und Unterschlüssel werden in umgekehrter Reihenfolge abgerufen (von unten nach oben), so dass RegDelete innerhalb der Schleife verwendet werden kann, ohne die Schleife zu unterbrechen.
Die folgenden Variablen sind nur in einer Registry-Schleife von Bedeutung. Wenn eine innere Registry-Schleife von einer äußeren Registry-Schleife umschlossen ist, hat das Element der innersten Schleife Vorrang:
Variable | Beschreibung |
---|---|
A_LoopRegName | Name des aktuell abgerufenen Elements, was entweder der Name eines Wertes oder der Name eines Unterschlüssels sein kann. Wertenamen, die im Registry-Editor als "(Standard)" dargestellt werden, werden abgerufen, sofern ihnen ein Wert zugewiesen wurde - A_LoopRegName selbst wird aber leer sein. |
A_LoopRegType | Typ des aktuell abgerufenen Elements, was eines der folgenden Wörter sein kann: KEY (bedeutet, das aktuell abgerufene Element ist ein Unterschlüssel, kein Wert), REG_SZ, REG_EXPAND_SZ, REG_MULTI_SZ, REG_DWORD, REG_QWORD, REG_BINARY, REG_LINK, REG_RESOURCE_LIST, REG_FULL_RESOURCE_DESCRIPTOR, REG_RESOURCE_REQUIREMENTS_LIST, REG_DWORD_BIG_ENDIAN (kommt eher selten vor). Diese Variable ist leer, wenn das aktuell abgerufene Element von unbekanntem Typ ist. |
A_LoopRegKey | Name des zurzeit verwendeten Root-Schlüssels (HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CURRENT_USER, HKEY_CLASSES_ROOT oder HKEY_CURRENT_CONFIG). Beim Zugriff auf eine Remote-Registry wird dieser Wert nicht den Namen des Computers enthalten. |
A_LoopRegSubKey | Name des aktuellen Unterschlüssels. Der Inhalt dieser Variable ist identisch zum Schlüssel-Parameter, es sei denn, der Rekursiv-Parameter wird zum rekursiven Durchsuchen anderer Unterschlüssel verwendet, dann enthält sie den vollständigen Pfad des aktuell abgerufenen Elements, ohne Root-Schlüssel. Zum Beispiel: Software\BeliebigeAnwendung\MeinUnterschlüssel |
A_LoopRegTimeModified | Der Zeitpunkt, wann der aktuelle Unterschlüssel oder einer seiner Werte zuletzt modifiziert wurde. YYYYMMDDHH24MISS-Format. Diese Variable ist leer, wenn das aktuell abgerufene Element kein Unterschlüssel ist (also wenn A_LoopRegType nicht das Wort KEY ist). |
Innerhalb einer Registry-Schleife können bei folgenden Befehlen die Parameter weggelassen werden, um zu kennzeichnen, dass das aktuell abgerufene Element abgearbeitet werden soll:
Syntax | Beschreibung |
---|---|
RegRead, AusgabeVar |
Liest das aktuelle Element. Wenn das aktuelle Element ein Schlüssel ist, wird ErrorLevel auf 1 gesetzt und AusgabeVar leer gemacht. |
RegWrite, Wert RegWrite |
Schreibt in das aktuelle Element. Lässt man Wert weg, wird das Element je nach Typ auf 0 gesetzt oder leer gemacht. Wenn das aktuelle Element ein Schlüssel ist, wird ErrorLevel auf 1 gesetzt und keine weiteren Aktionen durchgeführt. |
RegDelete |
Löscht das aktuelle Element. Wenn das aktuelle Element ein Schlüssel ist, wird er gelöscht, zusammen mit seinen Unterschlüsseln und Werten. |
Beim Zugriff auf eine Remote-Registry (über den RootSchlüssel- oder SchlüsselName-Parameter, wie oben beschrieben) gelten folgende Hinweise:
Auf der Loop-Seite finden Sie Informationen zu Blöcken, Break, Continue und A_Index (sie können in jeder Schleifenvariante verwendet werden).
Loop, Break, Continue, Blöcke, RegRead, RegWrite, RegDelete, SetRegView
Löscht den Link-Verlauf des Internet Explorer.
Loop, HKEY_CURRENT_USER, Software\Microsoft\Internet Explorer\TypedURLs RegDelete
Ein funktionierendes Testskript.
Loop, Reg, HKEY_CURRENT_USER\Software\Microsoft\Windows, KVR { if (A_LoopRegType = "key") Wert := "" else { RegRead, Wert if ErrorLevel Wert := "*error*" } MsgBox, 4, , %A_LoopRegType% = %Wert% (%A_LoopRegType%)`n`nWeiter? IfMsgBox, NO, break }
Sucht rekursiv in der gesamten Registry nach bestimmten Werten.
SetBatchLines -1 ; Führt die Operation mit maximaler Geschwindigkeit aus. RegSuchziel := "Notepad" ; Teilt der Subroutine mit, was gesucht werden soll. Gosub, RegSuche return RegSuche: RegSucheFortfahren := true Loop, Reg, HKEY_LOCAL_MACHINE, KVR { Gosub, RegElementPrüfen if not RegSucheFortfahren ; Teilt uns mit, dass sie gestoppt werden soll. return } Loop, Reg, HKEY_USERS, KVR { Gosub, RegElementPrüfen if not RegSucheFortfahren ; Teilt uns mit, dass sie gestoppt werden soll. return } Loop, Reg, HKEY_CURRENT_CONFIG, KVR { Gosub, RegElementPrüfen if not RegSucheFortfahren ; Teilt uns mit, dass sie gestoppt werden soll. return } ; Hinweis: Ich glaube, dass HKEY_CURRENT_USER nicht durchsucht werden muss, ; wenn HKEY_USERS durchsucht wird. Das gleiche könnte auch für HKEY_CLASSES_ROOT gelten, ; wenn HKEY_LOCAL_MACHINE durchsucht wird. return RegElementPrüfen: if (A_LoopRegType = "KEY") ; Entfernen Sie diese zwei Zeilen, wenn Sie die Schlüsselnamen auch überprüfen lassen wollen. return RegRead, RegWert if ErrorLevel return if InStr(RegWert, RegSuchziel) { MsgBox, 4, , Der folgende Treffer wurde gefunden:`n%A_LoopRegKey%\%A_LoopRegSubKey%\%A_LoopRegName%`nWert = %RegWert%`n`nWeiter? IfMsgBox, No RegSucheFortfahren := false ; Teilt unserem Aufrufer mit, die Suche zu stoppen. } return