G-Data AVCleaner silent ausführen

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.

?View Code AUTOIT
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

Über Bastian Müller

stay hungry. stay foolish.