RegRead

Liest einen Wert aus der Registry.

Neue Syntax [v1.1.21+]

RegRead, AusgabeVar, KeyName , ValueName

Parameter

AusgabeVar

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

KeyName

Der vollständige Name des Registry-Keys.

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 (oder [in v1.1.21+] einen Schrägstrich) davor: \\workstation01:HKEY_LOCAL_MACHINE

ValueName

Der Name des Wertes, der abgerufen werden soll. Lässt man diesen Parameter weg, wird der Standardwert von KeyName abgerufen - das ist der Wert, der in RegEdit als "(Standard)" angezeigt wird. 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 neue Syntax.

RegRead, AusgabeVar, RootKey, SubKey , ValueName

Parameter

AusgabeVar

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

RootKey

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). Um Zugriff auf eine Remote-Registry zu erhalten, setzen Sie wie folgt den Computernamen und einen Doppelpunkt (oder [in v1.1.21+] einen Schrägstrich) davor: \\workstation01:HKEY_LOCAL_MACHINE

SubKey

Der Name des Subkeys (z. B. Software\BeliebigeAnwendung).

ValueName

Der Name des Wertes, der abgerufen werden soll. Lässt man diesen Parameter weg, wird der Standardwert von SubKey abgerufen - das ist der Wert, der in RegEdit als "(Standard)" angezeigt wird. 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. nicht-existierender Key oder Wert) 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 werden immer als positive Dezimalzahlen dargestellt. Wenn die Zahl dazu gedacht war, negativ zu sein, können Sie sie mit AusgabeVar := AusgabeVar << 32 >> 32 oder ähnlichem in einen vorzeichenfähigen 32-Bit-Integer umwandeln.

Beim Lesen eines REG_BINARY-Keys ist das Ergebnis eine Zeichenkette mit hexadezimalen Zeichen. Zum Beispiel würde ein REG_BINARY-Wert von 01,a9,ff,77 als Zeichenkette 01A9FF77 gelesen werden.

Beim Lesen eines REG_MULTI_SZ-Keys endet jede Komponente mit einem Zeilenumbruchszeichen (`n). Gibt es keine Komponenten, wird AusgabeVar leer gemacht. In FileSelectFile finden Sie ein Beispiel, wie einzelne Komponenten aus AusgabeVar extrahiert werden können.

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

Mit der Registry-Schleife können mehrere Registry-Keys und -Werte abgerufen und bearbeitet werden.

In den Bemerkungen zur Registry-Schleife finden Sie Hinweise, wie man auf die Registry eines Remotecomputers zugreifen kann.

Mit SetRegView können Einträge von den 64-Bit-Bereichen der Registry in einem 32-Bit-Skript oder umgekehrt gelesen und geschrieben werden.

RegDelete, RegWrite, Registry-Schleife, SetRegView, IniRead

Beispiele

Neue Syntax vs. alte Syntax.

Trotz der unterschiedlichen 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\BeliebigeAnwendung, Testwert
RegRead, AusgabeVar, HKEY_LOCAL_MACHINE, Software\BeliebigeAnwendung, Testwert

Ermittelt und meldet den Pfad des "Program Files"-Ordners. Eine alternative Methode finden Sie unter EnvGet-Beispiel #2.

; Die nachfolgende Zeile stellt sicher, dass die 64-Bit-Version des Programm-Ordners
; zurückgegeben wird, wenn das Betriebssystem 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%

Ermittelt den TYP eines Registry-Wertes (z. B. REG_SZ oder REG_DWORD).

MsgBox % RegKeyTyp("HKCU", "Environment", "TEMP")
return

RegKeyTyp(RootKey, SubKey, ValueName)  ; Diese Funktion gibt den Typ eines bestimmten Wertes zurück.
{
    Loop, %RootKey%, %SubKey%
        if (A_LoopRegName = ValueName)
            return A_LoopRegType
    return "Fehler"
}