Auto-eliminación de archivo
Publicado por Zoto (41 intervenciones) el 18/07/2005 18:36:55
Hola a todos,
Estoy desarrollando un Setup personalizado en Visual Basic 6 para uno de mis programas y, en un momento dado, necesito que un archivo se auto-elimine a si mismo, es decir, que un programa exe se elimine a él mismo.
Como el programa está en ejecución cuando doy la orden de eliminación del mismo, necesito algún código (ya sea mediante APIs) que me permita dar la orden de eliminación del archivo al sistema operativo y que éste la efectue cuando el programa finalice su ejecución.
He oído a hablar de una función que podría resultarme útil, llamada MoveFileEx y la he probado, escribiendo lo siguiente como prueba en un formulario:
'La declaración de la API MoveFileEx
Private Declare Function MoveFileEx Lib "kernel32" Alias "MoveFileExA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal dwFlags As Long) As Long
'En el evento Form_Load del formulario en cuestión escribo el código que debería eliminar el archivo al volver a iniciar el sistema operativo.
Private Sub Form_Load()
Dim MeFile As String 'Variable que contendrá el nombre del propio ejecutable
MeFile = App.Path & "\" & App.EXEName & ".exe"
'Le doy la orden de eliminar MeFile, poniendo como archivo de destino una cadena nula.
MoveFileEx MeFile, "", MOVEFILE_DELAY_UNTIL_REBOOT
End Sub
Esto debería eliminar el archivo en cuestión una vez reiniciado el sistema operativo.
Lo he probado pero no lo hace: el archivo sigue estando ahí, intacto, y el programa no me da ningún tipo de error.
Tengo entendido que solo podría funcionar en Windows NT esta orden.
Si es así, desearía que alguien pudiera darme algún código en Visual Basic para que un archivo se auto-elimine a si mismo sin la ayuda de ningún otro programa.
Espero que alguien pueda ayudarme.
Gracias anticipadas.
Estoy desarrollando un Setup personalizado en Visual Basic 6 para uno de mis programas y, en un momento dado, necesito que un archivo se auto-elimine a si mismo, es decir, que un programa exe se elimine a él mismo.
Como el programa está en ejecución cuando doy la orden de eliminación del mismo, necesito algún código (ya sea mediante APIs) que me permita dar la orden de eliminación del archivo al sistema operativo y que éste la efectue cuando el programa finalice su ejecución.
He oído a hablar de una función que podría resultarme útil, llamada MoveFileEx y la he probado, escribiendo lo siguiente como prueba en un formulario:
'La declaración de la API MoveFileEx
Private Declare Function MoveFileEx Lib "kernel32" Alias "MoveFileExA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal dwFlags As Long) As Long
'En el evento Form_Load del formulario en cuestión escribo el código que debería eliminar el archivo al volver a iniciar el sistema operativo.
Private Sub Form_Load()
Dim MeFile As String 'Variable que contendrá el nombre del propio ejecutable
MeFile = App.Path & "\" & App.EXEName & ".exe"
'Le doy la orden de eliminar MeFile, poniendo como archivo de destino una cadena nula.
MoveFileEx MeFile, "", MOVEFILE_DELAY_UNTIL_REBOOT
End Sub
Esto debería eliminar el archivo en cuestión una vez reiniciado el sistema operativo.
Lo he probado pero no lo hace: el archivo sigue estando ahí, intacto, y el programa no me da ningún tipo de error.
Tengo entendido que solo podría funcionar en Windows NT esta orden.
Si es así, desearía que alguien pudiera darme algún código en Visual Basic para que un archivo se auto-elimine a si mismo sin la ayuda de ningún otro programa.
Espero que alguien pueda ayudarme.
Gracias anticipadas.
Valora esta pregunta


0