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