Вот такой вот вопросик. Как со стороны процесса Х, удалить его файл Х.ехе. Предложения по созданию Batch файла не предлагать. Файл должен быть удален именно в процессе выполнения Х.
ms-rem на форуме предлагал открыть девайс в raw режиме и работать с таблицей размещенмя напрямую у мыщъх есть статья по тому как восстанавливать удаленные файлы, почитайте
Затереть файл в обход драйвера фс? Интересно.. Или даже удалить. Кстати, можно ведь переименовывать независимо от блокировки (кажется), не пойдёт?
Действительно, можно даже перемещать. Ещё можно добавить такой файл в очередь на удаление после перезагрузки (MoveFileEx). А не пробовали открыть его с флагом FILE_FLAG_DELETE_ON_CLOSE?
Quantum Извиняюсь конечно, но кого это "ЕГО"? Если файл, то его загружает загрузчик методом файлового отображения на память, а не я, как дочерний процесс. Основным условием является именно то, что файл должен быть удален в процессе выполнения. IceStudent Это только кажется. И именно поэтому не пойдет.
spn_dd Попробовал. CreateFile не позволяет открыть такой файл даже без атрибутов R/W. Предложение отпадает. Переименовывать файл и перемещать можно. Тогда ресурс предложенный Asterix содержит исчерпывающий и достаточно универсальный ответ на сабж.
Не поможет, так как в этом случае удаление файла происходит по закрытии именно етого хендла, а по завержении процесса сначала закрываются все его хендлы (в том числе и этот), и только потом освобождается файл. А значит в момент закрытия файл будет еще заблокирован и удаление не удасться. Да, переименовать можно. Это не кажется, а так оно и есть (проверено). Ни одного нормального решения этой проблемы не существует, все решения имеют недостатки.
Ms Rem Я проверял только на файлах, открытых загрузчиком, а он позволяет открывать на чтение. Но не был уверен насчёт файлов, которые заблокированы полностью. Сейчас проверил - переименовать не получилось.
То файл удалиться в момент закрытия этого хендла (в другом процессе). Тогда уж проще вызывать из внедренного кода DeleteFile в цикле, пока файл не удалиться (и ставить задержки Sleep при неудаче). Но в любом случае, файл удалиться только после завершения процесса.
А может записать в файл мусор во время выполнения? Тогда посмотрите здесь Пример: http://wasm.ru/forum/files/1335335943__demo.exe (только FAT32, но с NTFS тоже можно. Надо лишь правильно указать, как рассчитывать место на диске для записи).
Шутка: запускать файл с дискеты, тогда он вроде как целиком копируется в память\своп и видимо может быть удален до завершения процесса ) Вот если бы можно было как-то обмануть загрузчик и делать то же самое с файлом на диске )
А если в IMAGE_FILE_HEADER файла указан IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP, он обрабатывается только когда со сменного носителя загружается программка или в любом случае?
Похоже, что с removable это действительно шутка\байка - возможно что-то куда то и копируется, но DeleteFile напрямую все равно не срабатывает