Привет.
Хочу реализовать метод удаления временных файлов после использования. Для этого думал воспользоваться FILE_FLAG_DELETE_ON_CLOSE при CreateFile, на XP работает отлично — но вот на Windows 7 не работает. Мне нужно запустить один dummy.exe и удалить его после завершения процесса (либо моего процесса, либо dummy.exe). Так вот проблема в том что после того как я скопировал файл в Temp директорию пытаюсь его открыть с флагом FILE_FLAG_DELETE_ON_CLOSE, но после этого не работает CreateProcess — либо наоборот, запускаю файл (CreateProcess) и после пытаюсь открыть файл — нет доступа. Как быть?
Здравствуйте, xrc2, Вы писали:
X>Привет.
X>Хочу реализовать метод удаления временных файлов после использования. Для этого думал воспользоваться FILE_FLAG_DELETE_ON_CLOSE при CreateFile, на XP работает отлично — но вот на Windows 7 не работает. Мне нужно запустить один dummy.exe и удалить его после завершения процесса (либо моего процесса, либо dummy.exe). Так вот проблема в том что после того как я скопировал файл в Temp директорию пытаюсь его открыть с флагом FILE_FLAG_DELETE_ON_CLOSE, но после этого не работает CreateProcess — либо наоборот, запускаю файл (CreateProcess) и после пытаюсь открыть файл — нет доступа. Как быть?
Уже было.Автор: ZENiTH
Дата: 28.01.07
Надо юзать поиск!
Здравствуйте, IID, Вы писали:
IID>Здравствуйте, xrc2, Вы писали:
X>>Привет.
X>>Хочу реализовать метод удаления временных файлов после использования. Для этого думал воспользоваться FILE_FLAG_DELETE_ON_CLOSE при CreateFile, на XP работает отлично — но вот на Windows 7 не работает. Мне нужно запустить один dummy.exe и удалить его после завершения процесса (либо моего процесса, либо dummy.exe). Так вот проблема в том что после того как я скопировал файл в Temp директорию пытаюсь его открыть с флагом FILE_FLAG_DELETE_ON_CLOSE, но после этого не работает CreateProcess — либо наоборот, запускаю файл (CreateProcess) и после пытаюсь открыть файл — нет доступа. Как быть?
IID>Уже было.Автор: ZENiTH
Дата: 28.01.07
Надо юзать поиск!
Дык, а толку? Все равно ведь решение не найдено, акромя конечно же watcher.bat файла. Да и еще учитывая тот факт что решение то не полностью работает на Windows Vista а у меня проблема с Windows 7.
Здравствуйте, xrc2, Вы писали:
X>Привет.
X>Хочу реализовать метод удаления временных файлов после использования. Для этого думал воспользоваться FILE_FLAG_DELETE_ON_CLOSE при CreateFile, на XP работает отлично — но вот на Windows 7 не работает. Мне нужно запустить один dummy.exe и удалить его после завершения процесса (либо моего процесса, либо dummy.exe). Так вот проблема в том что после того как я скопировал файл в Temp директорию пытаюсь его открыть с флагом FILE_FLAG_DELETE_ON_CLOSE, но после этого не работает CreateProcess — либо наоборот, запускаю файл (CreateProcess) и после пытаюсь открыть файл — нет доступа. Как быть?
В общем отвечаю сам себе.
Выделил для себя несколько методов самоудаления.
1) .bat файл.
2) Inject в чужой процесс пусть это будет explorer.exe и от туда в лупе удаляем все что нам нужно. (сложен в реализации)
3) Очень понравился один метод через NTFS Stream. подробнее
здесь. Проблема в том что будет работать только с NTFS, но к этому методу думаю можно прикрутить способ с FILE_FLAG_DELETE_ON_CLOSE для FAT'а — и думаю получиться универсальное решение, ну и конечно же можно для точной уверенности добавить 1) метод.
Кто что думает по поводу 3) метода?
Здравствуйте, xrc2, Вы писали:
X>Выделил для себя несколько методов самоудаления.
X>1) .bat файл.
Пойдёт. Плюс MoveFileEx + DELAY_UNTIL_REBOOT
X>2) Inject в чужой процесс пусть это будет explorer.exe и от туда в лупе удаляем все что нам нужно. (сложен в реализации)
Отвратительный метод. Сваливать свое говно в чужие процессы.

Очень "улучшает" стабильность работы.

К тому же запросто может не быть прав на открытие других процессов. Плюс антивирусы/ХИПСы поднимут вой на такое безобразие (и правильно).
X>3) Очень понравился один метод через NTFS Stream. подробнее здесь. Проблема в том что будет работать только с NTFS, но к этому методу думаю можно прикрутить способ с FILE_FLAG_DELETE_ON_CLOSE для FAT'а — и думаю получиться универсальное решение, ну и конечно же можно для точной уверенности добавить 1) метод.
Стримы — излюбленное место вирусов. (Например Rustock). Антивирусы давно про это в курсе. Если будешь писать в стрим PE файл нарвёшься на вой антивирусов и ХИПСов.
Тебе для чего это нужно ? Uninstall ? Юзай MSI пакеты и не изобретай велосипед.