Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: dooque en 16 Diciembre 2010, 18:16 pm



Título: Borrar ejecutable en proceso!
Publicado por: dooque en 16 Diciembre 2010, 18:16 pm
Wenas!

Mi pregunta de hoy es si alguien sabe (si es que se puede) como borrar un archivo ejecutable desde el mismo proceso generado por ese ejecutable.
Por ejemplo tengo mi programa test.exe y quiesiera que cuando lo ejecute él borrara su propio archivo ejecutable.

Pregunto esto porque de la manera usual no se puede, el sistema no te deja y a lo mejor alguien sabe/conoce/existe alguna API que me permita hacer eso!

Saludos!

Gonzalo.


Título: Re: Borrar ejecutable en proceso!
Publicado por: winroot en 16 Diciembre 2010, 20:03 pm
Buenas!
Me imagino que no te deja por que el archivo ya está en uso.
Bien, tal vez me equivoque, pero podrías hacer un segundo ejecutable.
Llamas al segundo ejecutable desde el primero, usando CreateProcess o lo que sea, y luego se cierra.
El ejecutable b espera por unos segundos, elimina el ejecutable a, y luego se cierra.
Incluso puedes usar fstreams y escribir un script js/vbs que haga la tarea.
Repito, capáz que no es la mejor solución, además de que supongo que estás en windows.
Un abrazo.


Título: Re: Borrar ejecutable en proceso!
Publicado por: Littlehorse en 16 Diciembre 2010, 20:29 pm
No se puede borrar el ejecutable mientras se encuentre en ejecución. Se pueden hacer otras cosas como iniciar un proceso secundario que sincronice con el ejecutable principal y lo borre terminada su ejecución. El efecto es el mismo y es por demás la solución mas sencilla.

Si reiniciar es una opción, podes usar MoveFileEx (http://msdn.microsoft.com/en-us/library/aa365240%28VS.85%29.aspx) con el flag MOVEFILE_DELAY_UNTIL_REBOOT:

Citar
If dwFlags specifies MOVEFILE_DELAY_UNTIL_REBOOT and lpNewFileName is NULL, MoveFileEx registers the lpExistingFileName file to be deleted when the system restarts. If lpExistingFileName refers to a directory, the system removes the directory at restart only if the directory is empty.
Saludos


Título: Re: Borrar ejecutable en proceso!
Publicado por: dooque en 17 Diciembre 2010, 04:28 am
Muy bien! Muchas gracias!

Si, ya tengo varias soluciones alternativas a mi problema vastante viables y no tan oscuras, solo queria asegurarme que no habia otra forma de hacerlo mejor!

Salduos!