Da la impresión de que estás creando un virus o troyano.
En fin, esto es un foro de programación VB, y como eso que pides se puede necesitar para cosas no necesariamente malas, os voy a dejar aqui una subrutina para conseguir ese resultado.
Como bien dices, la forma más popular de hacer algo así sería mediante un BAT, de modo que me voy a limitar a eso, aunque lo haré lo mejor que sepa.
Si buscas una mejor solución, por mi parte solo puedo recomendarte que busques en foros de hackers y creadores de virus, etc...
Esta es mi solución, una sub llamada KillMe.
La meteis en un Module del programa a borrar y la ejecutais antes de cerrar el programa, como por ejemplo en el evento QueryUnload.
Código :
Ver originalDeclare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
Sub KillMe()
Dim MiExe As String
Dim FicheroBAT As String
Dim numFichero As Integer
On Local Error Resume Next
' PREPARAMOS EL NOMBRE DEL BAT,
' QUE SERA CREADO EN LA CARPETA TEMPORAL
If Right$(Environ("temp"), 1) = "\" Then
FicheroBAT = Environ("temp") & "kll.bat"
Else
FicheroBAT = Environ("temp") & "\kll.bat"
End If
' CREAMOS EL BAT
numFichero = FreeFile
Open FicheroBAT For Output As #numFichero
Print #numFichero, "@echo off"
Print #numFichero, ":p1"
Print #numFichero, "attrib -h -s -r %1"
Print #numFichero, "del %1 >> nul"
Print #numFichero, "if exist %1 goto p1"
Close #numFichero
' PREPARAMOS EL NOMBRE DEL EXE A BORRAR
' EN ESTE CASO EL DEL PROPIO PROGRAMA
If Right$(App.Path, 1) = "\" Then
MiExe = App.Path & App.EXEName & ".exe"
Else
MiExe = App.Path & "\" & App.EXEName & ".exe"
End If
' LANZAMOS EL BAT BORRADOR
ShellExecute Form1.hwnd, "open", FicheroBAT, MiExe, "", vbHide
' SE DA POR SUPUESTO QUE TIENES UN FORM LLAMADO FORM1.
' SI NO ES ASÍ, CAMBIA "FORM1.HWND" POR "ELNOMBREDEUNFORMULARIO.HWND"
' CUANDO CERREMOS ESTE PROGRAMA, EL EXE
' SERÁ ELIMINADO.
' SOLO QUEDARA EL BAT DE LA CARPETA TEMP.
On Local Error GoTo 0
End Sub
Espero que os guste.