Registry durchsuchen

  • Hallo Ihrse,

    nach langer Zeit bin ich mal wieder dabei etwas mit AutoIT zu daddeln und steh natürlich prompt auf dem Schlauch.
    Ich bräuchte mal ein paar Anregungen von euch.

    Ziel:
    Ich will eine Software per AutoIT Script verteilen.

    Vorgehensweise:
    Um evtl. vorab installierte Versionen zu entdecken und zu löschen, will ich die Registry durchsuchen.
    Die passenden Schlüssel der Vorab-Versionen habe ich
    (z.B. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{AFA33FBF-10D4-4FC5-936D-7FDE77DEED12} )
    Sollte er einen der Registry Schlüssel finden, dann soll er die passende Deinstallation starten.
    Ist alles Deinstalliert oder es war keine alte Version vorhanden, dann installiert er die aktuelleste Version.

    Problem:
    Ich weiß nicht, wie ich die Registry nach den bekannten Schlüsseln durchsuchen kann

    Die passende GUI Umgebung war das kleinste Problem und ist fertig, aber jetzt gehts halt ans eingemacht.
    Das Installieren des MSI Packetes stellt auch kein Problem dar bzw. weiß ich auch, wie ich ein MSI Packet deinstalliere.

    Mir fehlt das Wissen, wie ich die Registry nach den Schlüsseln durchsuchen kann.

    Wäre nett, wenn Ihr mich auf den richtigen Pfad bringen könntet.

    Danke im Voraus.

  • Das geht mit

    [autoit]

    RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{AFA33FBF-10D4-4FC5-936D-7FDE77DEED12}","")
    If @error Then MsgBox(0,"",Key existiert nicht")

    [/autoit]
  • OH, :)

    hatte als was mit ner Schleife und ähnlichen komplizierten Kram im Kopf.

    Auf die einfache Idee mit Error Fehlermeldung bin ich nicht gekommen :)

    Wie immer viel zu kompliziert gedacht.

    Danke für die Hilfe

    Vielleicht ne Wichtige Info am Rande (falls Sie nicht bekannt sein sollte):
    Wenn man das mit dem @error macht, sollte man nicht nur den Schlüsselname abfragen, sonder auch gleich einen Unterschlüssel mit.
    Denn sollte der Schlüssel existieren, sich aber noch ein Unterschlüssel darin befinden, dann geht trotzdem davon aus, dass der Schlüssel nicht existieren würde.

    Hier ein Beispiel

    [autoit]


    RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Windows XP Service Pack", "")
    If @error Then
    MsgBox(4096,"Error 1", "existier nicht")
    Else
    MsgBox(4096, "Error1", "exisitert")
    EndIf

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

    RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Windows XP Service Pack", "ParentDisplayName")
    If @error Then
    MsgBox(4096,"Error 2", "existiert nicht")
    Else
    MsgBox(4096, "Error 2", "exisitert")
    EndIf

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

    Exit

    [/autoit]

    Einmal editiert, zuletzt von iwu74 (6. Februar 2008 um 17:47)