RegRead

Liest einen Wert aus der Registry.

Neue Syntax [v1.1.21+]

RegRead, AusgabeVar, SchlüsselName , WertName

Parameter

AusgabeVar

Name der Ausgabevariable, in der der abgerufene Wert gespeichert werden soll. Wenn der Wert nicht abgerufen werden kann, wird die Variable leer gemacht und ErrorLevel auf 1 gesetzt.

SchlüsselName

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.

WertName

Wenn leer oder weggelassen, wird der Standardwert von SchlüsselName abgerufen - das ist der Wert, den RegEdit als "(Standard)" anzeigt. Andernfalls geben Sie den Namen des abzurufenden Wertes an. Wenn es keinen Standardwert gibt (also wenn RegEdit "Wert nicht festgelegt" anzeigt), wird AusgabeVar leer gemacht und ErrorLevel auf 1 gesetzt.

Alte Syntax

Veraltet: Diese Syntax ist nicht für neue Skripte empfohlen. Verwenden Sie stattdessen die oben beschriebene neue Syntax.

RegRead, AusgabeVar, RootSchlüssel, UnterSchlüssel , WertName

Parameter

AusgabeVar

Name der Ausgabevariable, in der der abgerufene Wert gespeichert werden soll. Wenn der Wert nicht abgerufen werden kann, wird die Variable leer gemacht und ErrorLevel auf 1 gesetzt.

RootSchlüssel

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.

UnterSchlüssel

Name des Unterschlüssels, z.B. Software\BeliebigeApp.

WertName

Wenn leer oder weggelassen, wird der Standardwert von UnterSchlüssel abgerufen - das ist der Wert, den RegEdit als "(Standard)" anzeigt. Andernfalls geben Sie den Namen des abzurufenden Wertes an. Wenn es keinen Standardwert gibt (also wenn RegEdit "Wert nicht festgelegt" anzeigt), wird AusgabeVar leer gemacht und ErrorLevel auf 1 gesetzt.

Fehlerbehandlung

[v1.1.04+]: Dieser Befehl ist in der Lage, bei Misserfolg eine Ausnahme auszulösen. Weitere Informationen finden Sie unter Laufzeitfehler.

ErrorLevel wird bei Misserfolg auf 1 (z.B. wenn der Schlüssel oder Wert nicht existiert) oder bei Erfolg auf 0 gesetzt.

A_LastError wird auf das Ergebnis der Systemfunktion GetLastError() gesetzt.

Bemerkungen

Zurzeit werden nur die folgenden Werttypen unterstützt: REG_SZ, REG_EXPAND_SZ, REG_MULTI_SZ, REG_DWORD und REG_BINARY.

REG_DWORD-Werte sind in der Registry immer positive Dezimalzahlen. Wenn ein REG_DWORD-Wert als negative Zahl gedacht war, wandeln Sie ihn mit AusgabeVar := AusgabeVar << 32 >> 32 o.ä. in einen vorzeichenfähigen 32-Bit-Integer um.

Wenn ein REG_BINARY-Schlüssel gelesen wird, ist das Ergebnis eine Zeichenkette aus hexadezimalen Zeichen. Zum Beispiel wird der REG_BINARY-Wert 01,a9,ff,77 als 01A9FF77 gelesen.

Wenn ein REG_MULTI_SZ-Schlüssel gelesen wird, endet jede Komponente mit einem LF-Zeichen (`n). Wenn keine Komponenten enthalten sind, wird AusgabeVar leer gemacht. Um die einzelnen Komponenten aus AusgabeVar zu extrahieren, verwenden Sie eine parsende Schleife.

[v1.1.10.01+]: REG_BINARY-Werte größer als 64 KB können ebenfalls gelesen werden.

Mit der Registry-Schleife können mehrere Registry-Schlüssel und -Werte abgerufen und bearbeitet werden.

In den Bemerkungen zur Registry-Schleife finden Sie Informationen darüber, wie auf die Registry eines Remote-Computers zugegriffen werden kann.

Um Einträge in den 64-Bit-Bereichen der Registry mit einem 32-Bit-Skript (oder umgekehrt) zu lesen und zu schreiben, verwenden Sie SetRegView.

RegDelete, RegWrite, Registry-Schleife, SetRegView, IniRead

Beispiele

Neue Syntax vs. alte Syntax.

Trotz unterschiedlicher Syntax haben beide Beispiele den gleichen Effekt: Sie lesen einen Wert aus der Registry und speichern ihn in AusgabeVar.

RegRead, AusgabeVar, HKEY_LOCAL_MACHINE\Software\BeliebigeApp, Testwert
RegRead, AusgabeVar, HKEY_LOCAL_MACHINE, Software\BeliebigeApp, Testwert

Ruft den Pfad des Ordners "Programme" ab und meldet ihn. Eine alternative Methode finden Sie unter EnvGet-Beispiel #2.

; Die folgende Zeile stellt sicher, dass der Pfad des 64-Bit-Programmordners
; zurückgegeben wird, wenn das System 64-Bit ist und das Skript nicht.
SetRegView 64  ; Benötigt [v1.1.08+]

RegRead, AusgabeVar, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion, ProgramFilesDir
MsgBox, Programmdateien sind in: %AusgabeVar%

Ruft den Typ eines Registry-Wertes (z.B. REG_SZ oder REG_DWORD) ab.

MsgBox % RegSchlüsselTyp("HKCU", "Environment", "TEMP")
return

RegSchlüsselTyp(RootSchlüssel, UnterSchlüssel, WertName)  ; Diese Funktion gibt den Typ eines bestimmten Wertes zurück.
{
    Loop, Reg, %RootSchlüssel%\%UnterSchlüssel%
        if (A_LoopRegName = WertName)
            return A_LoopRegType
    return "Fehler"
}