Ist Programm 'X' installiert ?

  • Hallo, für ein grosseres Projekt muss ich mit AutoIt prüfen ob bestimmte Software installiert ist auf der Computer (mit WindowsXP oder Windows7) wo das Skript gerade lauft.
    Jetzt meine Frage: Wie ist die allgemeine vorgehensweise um zu uberprüfen ob ein Programm installiert ist? Sieht mann das im Register irgendwo oder kann mann besser WMI benutzen (aber wie?). ?(

    Programmieren ist ein bisschen Wissenschaft und viel Spass! :)

    Einmal editiert, zuletzt von Katrijn (16. Oktober 2010 um 15:08)

  • du schaust dir in der registry an wo diese Software die werte speichert und mit regread überprüfst du ob das programm auf diesem Rechner befindet

  • Ich würde es über die WMI machen, denn bei der Registry gibt es einen Nachteil (außer jemand weiß wie ich im x86 mode x64 Schlüssel auslese)

    Spoiler anzeigen
    [autoit]

    #RequireAdmin
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseX64=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    Local Const $sPathini = @ScriptDir & '\' & @ComputerName & '3.ini'
    _Programsread("x86")
    If @OSArch = "x64" Then _Programsread("x64")

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

    Func _Programsread($sOsArch)
    If $sOsArch = "x86" Then $sRegkey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
    If $sOsArch = "x64" Then $sRegkey = "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\"
    $i = 0
    While 1
    $i +=1
    $sReturnkeyname = RegEnumKey($sRegkey, $i)
    If @error Then ExitLoop
    $sReturnDisplayVersion = RegRead($sRegkey & $sReturnkeyname, "DisplayVersion")
    $sReturnDisplayName = RegRead($sRegkey & $sReturnkeyname, "DisplayName")
    If Not StringInStr($sReturnDisplayName,'(KB') <> 0 Then
    IniWrite($sPathini,'Version',$sReturnDisplayName,$sReturnDisplayVersion)
    EndIf
    WEnd
    EndFunc

    [/autoit]

    Im x64 Mode bekommst du nicht alle Programme. Führst du das Programm im x64 Mode aus klappt es nicht mehr unter x86 ^^
    Du könntest es höchstens 2 mal compilieren (einmal x86 einmal x64) und dann ein 3. Script je nach OS Architektur das jeweilige Script ausführen lassen ;)

    21 is only half the truth.

  • Hi!


    Einfach in beiden Uninstall zweige schauen!
    Hir ist der für x64 = HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall ;)


    Lg Kleienr

  • Hi!


    Einfach in beiden Uninstall zweige schauen!
    Hir ist der für x64 = HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall ;)


    Lg Kleienr

    Du musst bedenken das bei x64 OS, x86 Programme unter "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\"
    und x64 Programme unter "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" geschrieben werden ;)

    21 is only half the truth.