Лучше всего использовать Win32 API MoveFileEx . У него есть флаг, который можно установить для удаления файлов при их использовании при следующей перезагрузке, который называется MOVEFILE_DELAY_UNTIL_REBOOT
. Установите новый параметр имени файла MoveFileEx
на NULL
, чтобы выполнить этот тип удаления.
Если dwFlags указывает
MOVEFILE_DELAY_UNTIL_REBOOT и
lpNewFileName имеет значение NULL, MoveFileEx
регистрирует файл lpExistingFileName
быть удаленным, когда система
перезагружается.
Примечание. Используемые обычные файлы можно удалить в обычном порядке с помощью Win32 API DeleteFile в зависимости от того, были ли они открыты (с помощью Win32 API CreateFile
) с разрешением FILE_SHARE_DELETE
. Я не думаю, что запуск программ по умолчанию в Windows имеет такое разрешение. Если указан файл, который нужно удалить, который используется, но который был открыт с этим флагом, тогда этот файл будет удален, когда последний дескриптор файла будет закрыт.