Variabler Registry eintrag auslesen

  • Hallo zusammen

    Ich möchte ein wert aus der registry auslesen.
    Das ist ja kein Problem, aber der name des schlüssels ist zweiteilig und der zweite teil heist auf jedem rechner anderst.

    beispiel:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\AutoItv33213
    Auszulesender Wert: "DisplayName"

    Auf rechner 1 lautet der schlüssel: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\AutoItv321§3
    Auf rechner 2 lautet der schlüssel: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\AutoItv43241
    Auf rechner 3 lautet der schlüssel: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\AutoItv54365
    Auf rechner 4 lautet der schlüssel: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\AutoItv65476

    usw.

    Also, der anfang lautet immer Autoitv....
    der zweite teil ist aber variabel

    Hat jemand eine Idee wie ich das möglicht einfach machen soll?
    Leider gibt es ja kein * das man eingeben kann oder ein befehl "RegSearch"

    Einmal editiert, zuletzt von Sayen (30. Januar 2009 um 15:53)

  • Coole sache. Vielen Dank

    Hat so funktioniert:

    [autoit]

    For $i= 1 to 100
    $var = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\", $i)
    If Not StringInStr($var, "AutoIt")=0 Then
    MsgBox(0, "Info", "Key gefunden:" & @LF & $var)
    Exit
    EndIf
    Next
    MsgBox(0, "Info", "Key nicht gefunden")

    [/autoit]

    Findet ihr es so ok, oder würdet ihr es irgenwie verbesern?
    Bin noch ein Newbie :P

  • Du ließt maximal 100 Schlüssel. So ließt du alle. Nebenbei: Meine AutoIt-Installationsschlüssel heißen AutoItv3 und AutoItv3beta für die Beta.

    [autoit]

    Local $i = 0
    While 1
    $i += 1
    $var = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\", $i)
    If @error <> 0 Then ExitLoop
    If Not StringInStr($var, "AutoIt")=0 Then
    MsgBox(0, "Info", "Key gefunden:" & @LF & $var)
    Exit
    EndIf
    Wend
    MsgBox(0, "Info", "Key nicht gefunden")

    [/autoit][autoit][/autoit][autoit][/autoit]
  • Perfekt, vielen dank!

    Übrigens, ich brauche es nicht für Autoitv3 oder Autoitv3beta, sondern für was ganz anderes.
    So war es aber ein bischen einfacher zum erklären ;)