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. Falls 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.

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

WertName

Der Name des Wertes, der abgerufen werden soll. Lässt man diesen Parameter weg, wird der Standardwert von SchlüsselName 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, RootSchlüssel, UnterSchlüssel , WertName

Parameter

AusgabeVar

Name der Ausgabevariable, 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.

RootSchlüssel

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

UnterSchlüssel

Der Name des Unterschlüssels (z. B. Software\BeliebigeAnwendung).

WertName

Der Name des Wertes, der abgerufen werden soll. Lässt man diesen Parameter weg, wird der Standardwert von UnterSchlüssel 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 Schlüssel 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-Schlüssels 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-Schlüssels 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-Schlüssel 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 % RegSchlüsselTyp("HKCU", "Environment", "TEMP")
return

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