AutoIT Software Version Überprüfung

  • Hallo zusammen,

    ich habe ein Problem, zwar möchte ich gerne in der Registry nach einer Software bzw. deren Version suchen, zB. "7-Zip" in dem Bereich "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" und "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData" ... habe mir auch schon mit Hilfe von Google und dem Forum hier etwas zusammen gebastelt:

    [autoit]


    Func _RegSearchPath($sRegPath, $sSearch)
    Local $sKey, $sVal, $sVar, $ret, $i = 0, $j = 0, $rueck
    While True
    $i += 1
    $sKey = RegEnumKey($sRegPath, $i)
    If @error Then ExitLoop
    $ret = _RegSearchPath($sRegPath & '\' & $sKey, $sSearch)
    If $ret <> '' Then ExitLoop
    $j = 0
    While True
    $j += 1
    $sVal = RegEnumVal($sRegPath & '\' & $sKey, $j)
    If @error Then ExitLoop
    $sVar = RegRead($sRegPath & '\' & $sKey, $sVal)
    If StringInStr($sVar, $sSearch, 2) Then
    ConsoleWrite($sRegPath & '\' & $sKey & '\' & $sVal & @CRLF)
    $rueck = ($sRegPath & '\' & $sKey)
    ExitLoop
    EndIf
    WEnd
    WEnd
    Return $rueck
    EndFunc

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

    $var1 = _RegSearchPath('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall', "7-Zip")
    $var2 = _RegSearchPath('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData', "7-Zip")

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

    if($var1 == "" AND $var2 == "") Then
    Exit -1
    Else
    if($var1 <> "") Then
    MsgBox(0, 'VAR1-Gefunden:', $var1)
    $var3 = RegRead($var1, 'DisplayVersion')
    EndIf
    if($var2 <> "") Then
    MsgBox(0, 'VAR2-Gefunden:', $var2)
    $var3 = RegRead($var1, 'DisplayVersion')
    EndIf
    EndIf
    MsgBox(0, 'VAR3-Gefunden:', $var3)

    [/autoit]

    Leider ist es noch weit weg vom perfekten Script ...

    Folgendes habe ich jedoch eigentlich vor, alles in einer Funktion:

    1. Suche nach Softwarename in den beiden Bereichen
    2. Prüfen ob Softwarename in DisplayName enthalten ist (Bei "7-Zip" ist es zB "7-Zip 9.20 (x64 edition)")
    2.1 Wenn nicht, dann weitersuchen
    2.2 Wenn doch, dann den Pfad mit return zurückgeben (ohne "DisplayName")
    3. Prüfen ob im Pfad "DisplayVersion" vorhanden ist
    4. Auslesen von "DisplayVersion"

    Ich hoffe das ihr mir helfen könnt und danke schonmal im Vorraus!

    Viele Grüße,
    xKoGa