Die kannst so nicht killen weil die aktiv ist.
Hier hast was du brauchst.
Sorry, die Formatierung stammt von meinen Anfängen.
Code:
Private Befehl$
Private MeFile$
Private Batfile$
Private Comment As Boolean
Private Declare Function CharToOemA Lib "user32.dll" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
'**********************************************************************************************************
Private Sub Selbstzerstoerung()
Dim ff As Long
ff = FreeFile
If Len(App.Path) > 3 Then 'verhindert das auftauchen von "\\" im Dateinamen in einem Unterverzeichnis
MeFile = App.Path & "\" & App.EXEName & ".exe"
Batfile = App.Path & "\" & "Kill.bat"
Else 'Direkt auf der Festplatte
MeFile = App.Path & App.EXEName & ".exe"
Batfile = App.Path & "Kill.bat"
End If
If GetAttr(MeFile) Then SetAttr MeFile, 0 'falls Attribute (wie z.B. Schreibschutz) gesetzt sind, werden diese augeschaltet
Call CharToOemA(MeFile, MeFile) 'Konvertiert Dateinamen zu ANSI-Code
If Comment Then Befehl = "@echo off" & vbCrLf 'verhindert Anzeigen der Befehle im DOS-Fenster
Befehl = Befehl & ":Marke" & vbCrLf
Befehl = Befehl & "Del " & Chr(34) & MeFile & Chr(34) & vbCrLf 'Befehl zum Zerstören der EXE
Befehl = Befehl & "If Exist " & Chr(34) & MeFile & Chr(34) & " Goto Marke" & vbCrLf 'falls EXE noch vorhanden (Zugriff verweigert) -->
If Comment Then Befehl = Befehl & "echo." & vbCrLf & "echo EXE wurde zerstoert" & vbCrLf & "echo." & vbCrLf 'gibt Text aus
Befehl = Befehl & "del " & Chr(34) & Batfile & Chr(34) 'Bat-Datei zerstört sich selbst
Open Batfile For Binary As #ff 'Bat-Datei muss binär erstellt werden
Put #ff, , Befehl
Close #ff
If Not Comment Then
Shell Batfile, vbHide
Else
Shell Batfile, vbNormalFocus
End If
'End
End Sub