Пока любой код из исполняемого файла находится в памяти, он не может быть удален, но есть некоторые другие вещи, которые вы можете попробовать:
- Указание
MoveFileEx
отложить удаление до следующей перезагрузки - один из подходов, обычно используемых при установке / удалении кода.
- Используйте Task Scheduler , чтобы запланировать
cmd.exe /c del c:\path\myprog.exe
для запуска через 60 секунд, затем быстро завершите работу, чтобы иметь шанс на успех.
- Пакетный файл работает хорошо и может фактически удалить себя, потому что пакетный файл закрыт между строками.
Если вы используете метод пакетного файла, рассмотрите что-то вроде следующего:
:loop
ping -n 6 127.0.0.1
del /y %1
if exist %1 goto :loop
del byebye.bat
Команда ping
здесь используется для вставки задержки, поскольку sleep
не является стандартной командой в Windows. Цикл позволяет пакетному процессу выжидать время, пока он не сможет фактически удалить исполняемый файл.