SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: laloivol en Martes 12 de Junio de 2007, 19:02

Título: Programa Autodestructible
Publicado por: laloivol en Martes 12 de Junio de 2007, 19:02
Necesito proteger un programa que hice, el usuario debe poder correrlo una sola vez, y después de cerrarlo debe ser borrado del disco duro. Alguien tiene alguna idea de como puedo hacer esto?
Título: Re: Programa Autodestructible
Publicado por: Dieguinho. en Martes 12 de Junio de 2007, 20:08
Supongo que borrarse solo no se va a poder...
Quiza podrias acompañar a tu programa con otro que se ejecute cuando este se cierre y lo borre.
Despues quedaria este ultimo que ya no serviria de nada.

Otra cosa no se me ocurre.

saludos.
Título: Re: Programa Autodestructible
Publicado por: Neopro en Martes 12 de Junio de 2007, 21:00
Cita de: "Dieguinho."
Supongo que borrarse solo no se va a poder...
Quiza podrias acompañar a tu programa con otro que se ejecute cuando este se cierre y lo borre.
Despues quedaria este ultimo que ya no serviria de nada.

Otra cosa no se me ocurre.

saludos.
Lo mejor es un programa que deshaga los mismos cambios producidos por la instalación del otro.
Título: Re: Programa Autodestructible
Publicado por: laloivol en Viernes 15 de Junio de 2007, 00:16
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 :D

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();
}
Título: Re: Programa Autodestructible
Publicado por: Neopro en Viernes 15 de Junio de 2007, 16:31
Genial idea...

Gracias por postearla...