_REGRead

  • Da es mich immer wieder nervt, dass man nicht alle Werte auf einam laus der Registry auslesen kann, hab ich mal diese UDF geschrieben, die das Problem für mich gelöst hat.

    Kann man sowas gebrauchen? Freue mich auf Kritik und Vorschläge zur Verbesserung.

    Spoiler anzeigen
    [autoit]

    #include-once
    ; ==============================================================================================================
    ; ..............Name : _REGRead
    ; ......Beschreibung : Liest alle Werte eines Schlüssels in der Regisrty aus und gibt diese in einem Array zurück.
    ; ............Syntax : _REGRead($REGKey)
    ; .........Parameter : $REGKey - Der Schlüssel aus dme die Werte ausgelesen werden sollen.
    ; .....Rückgabe Werte: Erfolg - Gibt ein 2D Array zurück, $Array[0][0] enthält die Anzahl der Werte.
    ;....................: Fehler - Setzt @error auf 1 wenn der angegebene schlüssel nicht existiert.
    ; .............Author: .::Mignon::.
    ; ==============================================================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _REGRead($RegKey)
    $KeyCheck = RegRead($RegKey,"")
    If @error = 1 Then Return SetError(1)
    Local $ArREG[2][2]
    $Count = 1
    While 1
    $ArREG[$Count][0] = RegEnumVal($RegKey, $Count)
    If @error Then ExitLoop
    ReDim $ArREG[UBound($ArREG) + 1][2]
    $Count += 1
    WEnd
    For $j = 1 To $Count - 1
    $ArREG[$j][1] = RegRead($RegKey, $ArREG[$j][0])
    Next
    ReDim $ArREG[UBound($ArREG) - 1][2]
    $ArREG[0][0] = $Count - 1
    Return $ArREG
    EndFunc ;==>_REGRead

    [/autoit]

    Anwendungs Beispiel:

    Spoiler anzeigen
    [autoit]

    #include <REG.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $Array = _REGRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run")
    if @error Then MsgBox(16,"Fehler","Das angegebene Schlüssel existiert nicht.")

    MsgBox(0,"",$Array[0][0]) ; Gibt die Anzahl der Schlüssel an.
    MsgBox(0,"",$Array[1][0]) ; Gibt den Namen des Schlüsssels an.
    MsgBox(0,"",$Array[2][1]) ; Gibt den Wert des Schlüssels an.

    [/autoit]
  • bin ich schon dabei^^ thx für deinen kommentar.

    EDIT: hab error jetzt mit in das skript eingebracht und den ersten post aktuallisiert.

    2 Mal editiert, zuletzt von .::Mignon::. (14. Februar 2008 um 21:26)

  • Super gemacht, aber pack unbedingt noch ein "IsArray" an die Abfrage. Sonst stürzt im Zweifel dein Programm ab, wenn der Registry Schlüssel nicht existiert.

    [autoit]


    #include <REG.au3>

    [/autoit][autoit][/autoit][autoit]

    $Array = _REGRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run")
    if @error Then MsgBox(16,"Fehler","Das angegebene Schlüssel existiert nicht.")

    [/autoit][autoit][/autoit][autoit]

    If IsArray($Array) Then
    MsgBox(0,"",$Array[0][0]) ; Gibt die Anzahl der Schlüssel an.
    MsgBox(0,"",$Array[1][0]) ; Gibt den Namen des Schlüsssels an.
    MsgBox(0,"",$Array[2][1]) ; Gibt den Wert des Schlüssels an.
    EndIf

    [/autoit]