RegRead

Liest einen Wert aus der Registry.

Wert := RegRead(SchlüsselName, WertName, Standardwert)

Parameter

SchlüsselName

Typ: Zeichenkette

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 umgekehrten Schrägstrich voran, z.B. "\\workstation01\HKLM".

SchlüsselName kann nur weggelassen werden, wenn eine Registry-Schleife läuft - in diesem Fall wird standardmäßig der Schlüssel des aktuellen Schleifenelements verwendet. Wenn das Element ein Unterschlüssel ist, wird standardmäßig der vollständige Name dieses Unterschlüssels verwendet. Wenn das Element ein Wert ist, verwendet WertName standardmäßig den Namen dieses Wertes, kann aber überschrieben werden.

WertName

Typ: Zeichenkette

Wenn leer oder weggelassen, wird der Standardwert des Schlüssels abgerufen (außer wie oben erwähnt) - 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 ein OSError ausgelöst.

Standardwert

Typ: Any

Wenn weggelassen, wird ein OSError ausgelöst, anstatt einen Standardwert zurückzugeben. Andernfalls geben Sie den Wert an, der zurückgegeben werden soll, wenn der angegebene Schlüssel oder Wert nicht existiert.

Rückgabewert

Typ: Zeichenkette oder Integer

Diese Funktion gibt einen Wert des angegebenen Registry-Schlüssels zurück.

Fehlerbehandlung

Bei Misserfolg wird ein OSError ausgelöst. Misserfolg ist z.B. ein nicht-existierender Schlüssel oder Wert bei weggelassenem Standardwert oder ein Berechtigungsfehler.

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 Zeilenvorschubzeichen (`n). Wenn keine Komponenten vorhanden sind, wird eine leere Zeichenkette zurückgegeben. Um die einzelnen Komponenten aus dem Rückgabewert zu extrahieren, verwenden Sie eine parsende Schleife.

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.

RegCreateKey, RegDelete, RegDeleteKey, RegWrite, Registry-Schleife, SetRegView, IniRead

Beispiele

Liest einen Wert aus der Registry und speichert ihn in Testwert.

Testwert := RegRead("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

ProgramFilesDir := RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion", "ProgramFilesDir")
MsgBox "Programmdateien sind in: " ProgramFilesDir

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"
}