SoloCodigo
CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado 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?
-
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.
-
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.
-
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();
}
-
Genial idea...
Gracias por postearla...