Vor kurzem wurde ich vor die Aufgabe gestellt, auf über 50 Clients den G-Data Business AntiVir zu deinstallieren.
Über den Management-Server war dies nicht (bzw. nicht “vollständig” oder fehlerfrei) möglich, sodass man sich des Tools “G-Data AVCleaner” bedienen musste.
Der Cleaner prüft diverse Datenverzeichnisse und die Registry, und entfernt “hart” (auch, wenn G-Data noch ausgeführt wird), die betreffenden Verweise.
Manchmal ist ein Neustart und die erneute Ausführung erforderlich, um den G-Data Client komplett zu deinstallieren. Einen “silent-trigger” bringt die avcleaner.exe leider nicht mit.
Ich habe daraufhin ein einfaches AutoIT-Script erstellt, dass folgende Tasks durchführt:
- Den AVCleaner mit in die *.exe kompilieren; nach Ausführung in den @Temp-Ordner des Clients kopieren und ausführen
- Alle Elemente markieren und den “Entfernen”-Button drücken
- Es wird 3 Minuten gewartet, danach wird entweder
- das “Sie müssen Neustarten um weitere Elemente zu entfernen” bestätigt und ein Neustart durchgeführt, oder
- der AVCleaner beendet
Nach dem Neustart muss ggf. der AVCleaner erneut durchgeführt werden – G-Data ist zu diesem Zeitpunkt aber bereits “tot” – kein Dienst mehr, und nurnoch einige verbliebene Datendateien auf der Festplatte.
Der AVCleaner kann auf der Website von G-Data heruntergeladen werden, und muss – zur Kompilierung des Scripts – im gleichen Verzeichnis liegen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | FileInstall("AVCleaner_2012_DE.exe", @TempDir & "\AVCleaner_2012_DE.exe") $title = "AV-Cleaner" $text = "Select All" IF WinExists($title, $text) Then IF Not WinActive($title, $text) Then WinActivate($title, $text) Else Run(@TempDir & "\AVCleaner_2012_DE.exe") EndIf IF WinWaitActive($title, $text) Then ControlClick($title, $text, "Button1") sleep(5000) ControlClick($title, $text, "Button2") EndIf sleep(180000) $title2 = "Rechnerneustart erforderlich" $text2 = "Es konnten nicht alle" IF WinExists($title2, $text2) Then WinActivate($title2, $text2) IF WinWaitActive($title2, $text2) Then Send("{ENTER}") ControlClick($title, $text, "Button3") sleep(1000) Run(@ComSpec & " /c " & 'shutdown -t 10 -f -r', "", @SW_HIDE) EndIf Else IF WinWaitActive($title, $text) Then ControlClick($title, $text, "Button3") EndIf |