Prüfen ob ein bestimmtes Programm installiert ist

  • Weil ich für so Standart Programme ein Tool erstellen wollte, welche die Programme automatisch installiert.
    Ich hätte nur vorher gerne eine Abfrage ob das Programm schon auf dem Rechner vorhanden ist.

    LG

    Philip

  • Das hatte ich mir auch schon überlegt.
    Ich habs jetzt so gemacht das er im Standartinstallatiospfad sucht, aber was mache ich wenn das jemand vorher in ein anderes Verzeichniss installiert hat?

    Sorry für die Fragen, kenne mich in AutoIT noch nicht so gut aus.

    LG

    Philip

  • Hier sind die ganzen Ordner der Installierten Programme, aber eben auch mit Unterordnern: HKLM\Software\Microsoft\Windows\CurrentVersion\Installer\Folders

    • Offizieller Beitrag

    Bei einem 64Bit-Windows stehen die 32Bit-Programme in einem etwas anderen Registry-Pfad. Ich habe mal schnell eine Funktion geschrieben, die alle Programme ausliest:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>

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

    $array = _GetSoftwareList()
    _ArrayDisplay($array)

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

    Func _GetSoftwareList()
    Local $sSoftwareList, $iInstance = 0, $sKey, $sName
    Local $sRegKey = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall'
    Local $sRegKey32 = 'HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall'
    Do
    $iInstance += 1
    $sKey = RegEnumKey($sRegKey, $iInstance)
    If @error Then ExitLoop
    $sName = RegRead($sRegKey & '\' & $sKey, 'DisplayName')
    If $sName <> '' Then $sSoftwareList &= $sName & @CRLF
    Until $sKey = ''
    $iInstance = 0
    Do
    $iInstance += 1
    $sKey = RegEnumKey($sRegKey32, $iInstance)
    If @error Then ExitLoop
    $sName = RegRead($sRegKey32 & '\' & $sKey, 'DisplayName')
    If $sName <> '' Then $sSoftwareList &= $sName & @CRLF
    Until $sKey = ''
    If $sSoftwareList = '' Then Return SetError(1, 0, '')
    Return StringSplit(StringTrimRight($sSoftwareList, 1), @CRLF, 1)
    EndFunc

    [/autoit]
  • Ich hab jetzt mal bei einem 32-Bit Windows System nachgeguckt und da ist in der Registry bei Uninstal kein Eintrag für Adobe Reader.
    Gibt es noch eine andere Möglichkeit herauszufinden was installiert ist?
    Kann AutoIT auch auf Programme und Funktionen in der Systemsteuerung zugreifen?

    LG

    Philip