Ruft die Inhalte eines bestimmten Registry-Unterschlüssels nacheinander 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, z.B. HKLM\Software\BeliebigeApp
.
Der Name muss entweder mit 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) beginnen.
Um auf eine Remote-Registry zuzugreifen, stellen Sie den Computernamen und einen Doppelpunkt (oder in [v1.1.21+] einen umgekehrten Schrägstrich) voran, z.B. \\workstation01\HKLM
.
Wenn leer oder weggelassen, werden nur Werte einbezogen und Unterschlüssel nicht rekursiv durchwandert. Andernfalls geben Sie einen oder mehrere der folgenden Buchstaben an:
Veraltet: Diese Syntax ist nicht für neue Skripte empfohlen. Verwenden Sie stattdessen die oben beschriebene 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 auf eine Remote-Registry zuzugreifen, stellen Sie den Computernamen und einen Doppelpunkt (oder in [v1.1.21+] einen umgekehrten Schrägstrich) voran, z.B. \\workstation01\HKLM
.
Name des Schlüssels, z.B. Software\BeliebigeApp
. Wenn leer oder weggelassen, werden die Inhalte von RootSchlüssel abgerufen.
Wenn leer oder weggelassen, wird standardmäßig 0 verwendet. Andernfalls geben Sie eine der folgenden Ziffern an:
Wenn leer oder weggelassen, wird standardmäßig 0 verwendet. Andernfalls geben Sie eine der folgenden Ziffern an:
Eine Registry-Schleife ist nützlich, wenn mehrere Werte oder Unterschlüssel in der Registry nacheinander abgearbeitet werden sollen. Die Werte und Unterschlüssel werden in umgekehrter Reihenfolge (von unten nach oben) abgerufen, 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, wenn 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 (d.h. 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 Root-Schlüssels, auf den gerade zugegriffen wird (HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CURRENT_USER, HKEY_CLASSES_ROOT oder HKEY_CURRENT_CONFIG). Bei einem Remote-Registry-Zugriff wird dieser Wert nicht den Computernamen enthalten. |
A_LoopRegSubKey | Name des aktuellen Unterschlüssels. Dies entspricht dem Schlüssel-Parameter, es sei denn, der Rekursiv-Parameter wird zum rekursiven Durchwandern anderer Unterschlüssel verwendet, dann wird es der vollständige Pfad des aktuell abgerufenen Elements ohne Root-Schlüssel sein. Zum Beispiel: Software\BeliebigeApp\MeinUnterschlüssel |
A_LoopRegTimeModified | Der Zeitpunkt, wann der aktuelle Unterschlüssel oder einer seiner Werte zuletzt geändert 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 die folgenden Befehle in vereinfachter Form verwendet werden, um anzugeben, dass sie mit dem aktuell abgerufenen Element arbeiten sollen:
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. Wenn Wert weggelassen wird, 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 weitere Aktion ausgeführt. |
RegDelete |
Löscht das aktuelle Element. Wenn das aktuelle Element ein Schlüssel ist, wird dieser zusammen mit seinen Unterschlüsseln und Werten gelöscht. |
Beim Zugriff auf eine Remote-Registry (über den RootSchlüssel- oder SchlüsselName-Parameter, wie oben beschrieben) müssen Sie Folgendes beachten:
Auf der Loop-Seite finden Sie Informationen zu Blöcken, Break, Continue und A_Index (die in jeder Schleifenvariante verwendet werden kann).
Loop, Break, Continue, Blöcke, RegRead, RegWrite, RegDelete, SetRegView
Trotz unterschiedlicher Syntax haben beide Beispiele den gleichen Effekt: Sie rufen die Inhalte eines bestimmten Registry-Unterschlüssels nacheinander ab.
Loop, Reg, HKEY_LOCAL_MACHINE\Software\BeliebigeApp MsgBox %A_LoopRegName%
Loop, HKEY_LOCAL_MACHINE, Software\BeliebigeApp MsgBox %A_LoopRegName%
Löscht den Link-Verlauf des Internet Explorers.
Loop, Reg, 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 ; Die Operation so schnell wie möglich ausführen. RegSucheZiel := "Notepad" ; Der Subroutine mitteilen, was gesucht werden soll. Gosub, RegSuche return RegSuche: RegSucheFortfahren := true Loop, Reg, HKEY_LOCAL_MACHINE, KVR { Gosub, RegElementPrüfen if not RegSucheFortfahren ; Suche stoppen. return } Loop, Reg, HKEY_USERS, KVR { Gosub, RegElementPrüfen if not RegSucheFortfahren ; Suche stoppen. return } Loop, Reg, HKEY_CURRENT_CONFIG, KVR { Gosub, RegElementPrüfen if not RegSucheFortfahren ; Suche stoppen. return } ; Hinweis: Ich glaube nicht, dass HKEY_CURRENT_USER durchsucht werden muss, ; wenn HKEY_USERS durchsucht wird. Dasselbe könnte auch für HKEY_CLASSES_ROOT ; gelten, wenn HKEY_LOCAL_MACHINE durchsucht wird. return RegElementPrüfen: if (A_LoopRegType = "KEY") ; Dies entfernen, um auch Schlüsselnamen zu prüfen. return RegRead, RegWert if ErrorLevel return if InStr(RegWert, RegSucheZiel) { MsgBox, 4, , Es wurde Folgendes gefunden:`n%A_LoopRegKey%\%A_LoopRegSubKey%\%A_LoopRegName%`nWert = %RegWert%`n`nWeiter? IfMsgBox, No RegSucheFortfahren := false ; Aufrufer mitteilen, die Suche zu stoppen. } return