SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: Linspire en Domingo 14 de Enero de 2007, 21:54

Título: Ayuda Con Ejecutable
Publicado por: Linspire en Domingo 14 de Enero de 2007, 21:54
Hola a todos, resulta que estuve buscando en el foro y no encontré algo relacionado (o quizá no busqué bien :unsure: ), pero lo que quiero hacer es lo siguiente:

Crear un ejecutable y que después de cierto tiempo, digamos, la siguiente semana o en una fecha específica se autodestruya. :devil:

Algo así como un Robot, pero no tengo idea de como hacerlo, lo único que se me ocurre es crear dos aplicaciones y una de ellas que se encargue de destruir a la otra, pero no me parece muy fiable.

Alguién podría ayudarme con esto?

Muchas gracias de antemano. :D
Título: Re: Ayuda Con Ejecutable
Publicado por: bob esponja en Lunes 15 de Enero de 2007, 05:39
en la primera corrida guarda la fecha en algun lado y cada vez que se ejecuta fijate cuanto paso, cuando pasa el limite corre un comando del sistema
rm o remove con system
Título: Re: Ayuda Con Ejecutable
Publicado por: Linspire en Martes 16 de Enero de 2007, 04:25
Creo haber entendido lo que dices, pero sucede que no tengo mucha experiencia en cuanto a lo de sistemas, podrìas darme un poco màs de informaciòn sobre como correr el comando que mencionas? :)

Gracias por responder :D
Título: Re: Ayuda Con Ejecutable
Publicado por: wako13 en Martes 16 de Enero de 2007, 17:58
Puedes utlizar el Timer de la pestaña System, aca te dejo un trozo de código que uso para apagar mi maquina cuando la dejo descargando en las noches  :comp:

Código: Text
  1. void __fastcall TForm1::FormCreate(TObject *Sender)
  2. {
  3.         Timer2->Enabled = true;
  4.  
  5.  
  6.  
  7. }
  8. //---------------------------------------------------------------------------
  9.  
  10. void __fastcall TForm1::Timer2Timer(TObject *Sender)
  11. {
  12.         //los timer tienen un intervalo de 10 min
  13.         Timer2->Enabled = false;
  14.         Timer1->Enabled = true;        
  15. }
  16. //---------------------------------------------------------------------------
  17.  
  18. void __fastcall TForm1::Timer1Timer(TObject *Sender)
  19. {
  20.         Word Whora, Wminu, Wsegu, Wmili;
  21.         DecodeTime(Time(), Whora, Wminu, Wsegu, Wmili);
  22.                 if (100 * Whora + Wminu >= 2045) //para apagarse a a las >=20:45 PM
  23.                         {
  24.                                 ApagarWindows();
  25.                         }
  26.                 else
  27.                         {
  28.                                
  29.                                 Timer1->Enabled = false;
  30.                                 Timer2->Enabled = true;
  31.                         }
  32. }
  33.  

Es una idea...

Saludos Cordiales
Título: Re: Ayuda Con Ejecutable
Publicado por: Eternal Idol en Martes 16 de Enero de 2007, 18:52
Creo que no estan teniendo en cuenta el verdadero problema que acarrea este borrado: el archivo esta abierto y hasta que no se cierre no se puede borrar, por tanto no puede ser borrado por el mismo proceso.

Una solucion simple que se me ocurre ahora es crear un archivo interpretado (lease bat, vbs, etc) en tiempo de ejecucion y que este espere unos segundos mientras nuestro ejecutable muere y ahi lo borre, aca hay un burdo ejemplo:

Código: Text
  1.  
  2. #include <windows.h>
  3.  
  4. void main()
  5. {
  6.   HANDLE Killer = CreateFile("Killer.vbs", GENERIC_ALL, 0, 0, CREATE_ALWAYS, 0, 0);
  7.   if (Killer != INVALID_HANDLE_VALUE)
  8.   {
  9.     DWORD written = 0;
  10.     char err[] = "On Error Resume Next\r\n";
  11.     char sl[] = "WScript.Sleep 5000\r\n";
  12.     char fs[] = "Set FS = CreateObject(\"Scripting.FileSystemObject\")\r\n";
  13.     char dels[] = "FS.DeleteFile \"";
  14.     char dele[] = "\"\r\n";
  15.     char suicide[] = "Fs.DeleteFile \"Killer.vbs\"";
  16.     char file[1024];
  17.     GetModuleFileName(0, file, 1024);
  18.     WriteFile(Killer, err, strlen(err), &written, 0);
  19.     WriteFile(Killer, sl, strlen(sl), &written, 0);
  20.     WriteFile(Killer, fs, strlen(fs), &written, 0);
  21.     WriteFile(Killer, dels, strlen(dels), &written, 0);
  22.     WriteFile(Killer, file, strlen(file), &written, 0);
  23.     WriteFile(Killer, dele, strlen(dele), &written, 0);
  24.     WriteFile(Killer, suicide, strlen(suicide), &written, 0);
  25.     CloseHandle(Killer);
  26.     ShellExecute(0, "open", "Killer.vbs", 0, 0, SW_HIDE);
  27.   }
  28. }
  29.  
  30.  
Título: Re: Ayuda Con Ejecutable
Publicado por: Linspire en Jueves 18 de Enero de 2007, 04:17
Perfecto, me han dado muchas ideas que estoy seguro podràn servirme, dejenme probar y ya respondo que pasa, y si logro hacerlo publicaré el código por si a alguien le es de utilidad.

 :P  :D