Ya tengo la solución y funciona perfectamente: antes de cerrar, el programa crea un archivo vbscript y lo ejecuta. Este vbs se encarga de borrar el programa original y ademas de autodestruirse, osea que no queda ningun archivo basura en el disco
Intenté subir la liga de la solución pero me salio un error así que dejo la solución tal cual:
La aplicación tendrá un botón llamado button1 que al presionarlo, terminará la ejecución y se autodestruirá. Se deben agregar los siguientes métodos:
private void button1_Click(object sender, System.EventArgs e)
{
// Crea el script
WriteVBSFile();
// Ejecuta el script
Process myProcess = new Process();
myProcess.StartInfo.FileName = "del.vbs";
myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
myProcess.Start();
// termina el programa
this.Close();
return;
}
private void WriteVBSFile()
{
// Crea un stream para escribir al archivo del.vbs
StreamWriter vbs = new StreamWriter("del.vbs");
// Define variables dentro del script
vbs.WriteLine("Dim wait");
vbs.WriteLine("Dim fso");
// Espera 5 segundos antes de destruir el programa principal
vbs.WriteLine("wait = dateadd(\"s\",5,now)");
vbs.WriteLine("do until now > wait");
vbs.WriteLine("loop");
// crea un objeto para eliminar los archivos
vbs.WriteLine("Set fso = CreateObject(\"Scripting.FileSystemObject\")");
// elimina el programa principal
vbs.WriteLine("fso.DeleteFile(\"selfdeleting.exe\")");
// elimina el script
vbs.WriteLine("fso.DeleteFile(\"del.vbs\")");
// termina de escribir el archivo
vbs.Flush();
vbs.Close();
}