¿Cómo puede un progtwig eliminar su propio ejecutable?

¿Hay alguna forma de que un proceso en ejecución pueda eliminar su propio ejecutable?

Por ejemplo, hago una aplicación de consola (solo exe) y después de hacer algunas tareas de alguna manera elimina el archivo exe.

Tengo que enviar un solo archivo a alguien. Y quiero que se elimine después de que realiza su tarea prevista.

¿Hay alguna forma de hacerlo en Windows?

Una forma de hacerlo es usar la función MoveFileEx con el indicador MOVEFILE_DELAY_UNTIL_REBOOT y un destino NULL . De acuerdo con la documentación, esto:

registra el archivo lpExistingFileName que se eliminará cuando el sistema se reinicie. Si lpExistingFileName se refiere a un directorio, el sistema elimina el directorio al reiniciarlo solo si el directorio está vacío.

 process.start("cmd /c ping localhost -n 3 > nul & del filepath") exit 

reemplace el proceso. comience con cualquier comando que use su lenguaje de progtwigción para iniciar progtwigs con argumentos

reemplace filepath con la ruta a su exe

reemplace la salida con el comando para terminar su progtwig

Es posible hacer esto en Linux. Descubrirá que generalmente no es posible eliminar un archivo ejecutable en ejecución en Windows. Sin embargo, puede hacer que Windows elimine el EXE el próximo reinicio: http://www.howtodothings.com/computers/a1402-delete-a-running-exe.html

Si desea que el archivo se elimine después de que se haya ejecutado, simplemente puede pedirle al usuario que lo elimine. Si la razón por la que quiere esto es como una medida de seguridad, entonces lo que está haciendo está mal orientado. El usuario podría eludir esto simplemente haciendo una copia del archivo primero.

Puede usar el progtwigdor de Windows para progtwigr una tarea y eliminar su progtwig después de X segundos.

Línea de comando: http://msdn.microsoft.com/en-us/library/bb736357%28VS.85%29.aspx

O API: http://msdn.microsoft.com/en-us/library/aa383608%28VS.85%29.aspx

Puede ejecutar otra aplicación, que esperaría a que finalice el proceso principal, y luego eliminar su ejecutable.

Hasta que ese exe esté en la memoria, no podrá eliminarse a sí mismo. Sin embargo, puede registrar en el sistema una tarea para borrarse después de un período de tiempo establecido de intervalo en el que se espera que complete su ejecución.

Resolví este problema (usando Visual Basic) al crear un archivo por lotes que se ejecuta mientras el proceso aún se está ejecutando, espera 1 segundo para que el progtwig pueda cerrarse y luego eliminar el progtwig.

Es posible que deba modificarlo, ya que esto borrará todo en la misma carpeta. Después de su tarea simplemente llame a del() y debería funcionar.

  Sub del() Dim file As System.IO.StreamWriter file = My.Computer.FileSystem.OpenTextFileWriter("del.bat", True) file.WriteLine("") file.WriteLine("timeout 1") file.WriteLine("echo Y | del *.*") file.Close() Process.Start("del.bat") Me.Close() End Sub