FILE_FLAG_DELETE_ON_CLOSE и Windows 7
От: xrc2  
Дата: 13.10.09 13:15
Оценка:
Привет.

Хочу реализовать метод удаления временных файлов после использования. Для этого думал воспользоваться FILE_FLAG_DELETE_ON_CLOSE при CreateFile, на XP работает отлично — но вот на Windows 7 не работает. Мне нужно запустить один dummy.exe и удалить его после завершения процесса (либо моего процесса, либо dummy.exe). Так вот проблема в том что после того как я скопировал файл в Temp директорию пытаюсь его открыть с флагом FILE_FLAG_DELETE_ON_CLOSE, но после этого не работает CreateProcess — либо наоборот, запускаю файл (CreateProcess) и после пытаюсь открыть файл — нет доступа. Как быть?
Re: FILE_FLAG_DELETE_ON_CLOSE и Windows 7
От: IID Россия  
Дата: 13.10.09 18:48
Оценка:
Здравствуйте, 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
Надо юзать поиск!
kalsarikännit
Re[2]: FILE_FLAG_DELETE_ON_CLOSE и Windows 7
От: xrc2  
Дата: 14.10.09 07:03
Оценка:
Здравствуйте, 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.
Re: FILE_FLAG_DELETE_ON_CLOSE и Windows 7
От: xrc2  
Дата: 14.10.09 07:47
Оценка:
Здравствуйте, 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) метода?
Re[2]: FILE_FLAG_DELETE_ON_CLOSE и Windows 7
От: IID Россия  
Дата: 15.10.09 07:51
Оценка:
Здравствуйте, 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 пакеты и не изобретай велосипед.
kalsarikännit
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.