[C con Clase] WinAPI - Como crear EXE que se cierre y se borre.

Ten Voltios tenvoltios en hotmail.com
Jue Abr 26 04:58:00 CEST 2007


Holas
hay un lindo codigo en la red que funciona super bien ya que hace un bucle 
en el .bat
aki va:

static const char tempbatname[] = "_uninsep.bat" ;

void Selfdestruct()
{
  // temporary .bat file
  static char templ[] =
    ":Repeat\r\n"
    "del \"%s\"\r\n"
    "if exist \"%s\" goto Repeat\r\n"
    "rmdir \"%s\"\r\n"
    "del \"%s\"" ;


  char modulename[_MAX_PATH] ;    // absolute path of calling .exe file
  char temppath[_MAX_PATH] ;      // absolute path of temporary .bat file
  char folder[_MAX_PATH] ;

  GetTempPath(_MAX_PATH, temppath) ;
  strcat(temppath, tempbatname) ;

  GetModuleFileName(NULL, modulename, MAX_PATH) ;
  strcpy (folder, modulename) ;
  char *pb = strrchr(folder, '\\');
  if (pb != NULL)
    *pb = 0 ;

  HANDLE hf ;

  hf = CreateFile(temppath, GENERIC_WRITE, 0, NULL,
              CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL) ;

  if (hf != INVALID_HANDLE_VALUE)
  {
    DWORD len ;
    char *bat ;

    bat = (char*)alloca(strlen(templ) +
               strlen(modulename) * 2 + strlen(temppath) + 20) ;

    wsprintf(bat, templ, modulename, modulename, folder, temppath) ;

    WriteFile(hf, bat, strlen(bat), &len, NULL) ;
    CloseHandle(hf) ;

    ShellExecute(NULL, "open", temppath, NULL, NULL, SW_HIDE);
  }
}


link
http://www.codeproject.com/file/cpselfdestruct2.asp









>From: Programante <programante en gmail.com>
>Reply-To: Lista de correo sobre C y C++ <cconclase en listas.conclase.net>
>To: Lista de correo sobre C y C++ <cconclase en listas.conclase.net>
>Subject: Re: [C con Clase] WinAPI - Como crear EXE que se cierre y se 
>borre.
>Date: Wed, 25 Apr 2007 23:44:49 +0200
>
>Dare escribió:
> > Quizás hay alguna manera de hacer eso, poner un código ejecutable en 
>memoria y que no pare hasta que (se cierra el ejecutable) y borre el 
>ejecutable. Aunque esto me supera y lo veo muy difícil. Quizás haya otra 
>manera.
> >
>El problema es que al poner el ejecutable en memoria, se mapea el .exe
>en memoria, por lo que no se puede borrar mientras se ejecuta.
>Necesitarías un ejecutable de un tercero.
>Se podría implementar el código del .bat pero como un programa ya
>existente, al que le copias ese código y pones a ejecutar. La base es la
>misma, aunque a mucho más bajo nivel, pero evitarías que el usuario
>pudiese descubrir el .bat
>
>_______________________________________________
>Lista de correo Cconclase Cconclase en listas.conclase.net
>http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ

_________________________________________________________________
De todo para la Mujer Latina http://latino.msn.com/mujer/





Más información sobre la lista de distribución Cconclase