Uninstallstring auslesen

  • Hallo,

    es ist mal wieder soweit dass ich nach längerer Abstinenz mal wieder ein kleiens Wunder vollbringen darf.
    Es soll ein Programm in diesem Fall Workplace Protect von Fujitsu Siemens deinistalliert werden.

    Leider ist der Uninstall String nicht immer der selber also muss ich ihn irgendwie auslesen.
    Gefunden hab ich das:
    https://www.autoitscript.com/forum/topic/16…-from-registry/

    Das wäre dann aber mit Kanonen auf Spatzen geschossen.
    Und den Code unten auf einer anderen Seite.
    Das Problem ist dass das obere es findet aber viel zu viel ist und ich es auch nicht durchschaue.
    Das andere findet den String nicht :S

    Hat da jemand von euch eine schnelle Lösung?


  • Hi,

    Vielleicht suchst du am "falschen" Ort.

    Versuchmal folgenden Registry-Keys:

    "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" <- dein aktueller Versuch
    "HKLM64\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
    "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall"

    Welchen du benützen musst hängt von deinem Windows ab, siehe dir dazu mal das Script auf der Seite an, welche du oben verlinkt hast.

    mfg
    Zeitriss

  • Z. B. so...

    Uninstall
  • Danke euch aber so ganz erschliesst es sich mir noch nicht.

    Bitnugger:
    Das klappt leider auch nicht. Oder ich mache was falsch

    Der Schlüsselname ist ja nicht der Name des Programms:
    Beim testen habe ich jetzt mal den BIzagi Modeller bei mir genommen
    Der ist unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{678285E9-FA95-4851-8E2D-0CA61A61B5FD}

    und den finde ich dann nicht.
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\CCleaner
    z.B. funktioniert

  • Falls Du nicht auf das Durchsuchen der Registry festgelegt bist, könntest Du das Programm per WMI deinstallieren.

    AutoIt
    ; https://msdn.microsoft.com/en-us/library/aa394378(v=vs.85).aspx
    Dim $WQL = 'SELECT * FROM Win32_Product WHERE Name LIKE "%Workplace Protect%"' ; Bitte anpassen!!!
    Dim $Softwares = ObjGet('winmgmts:\root\cimv2').ExecQuery($WQL) ; As SWbemObjectSet
    
    
    For $Software In $Softwares
    	ConsoleWrite($Software.Name & @CRLF)
    	; Software.Uninstall()
    Next
  • Danke wird getestet;)
    Woher die Information kommt ist mir in dem Fall egal.
    Die Kollegen müssen da 140 Notebooks umstellen und wenn ich denen so viel geklicke erparen kann um so besser.