Здравствуйте! Есть задача сделать "сетевую корзину": эмуляцию корзины windows. Дело в том, что файлы, лежащие на сетевых дисках, не отправляются в корзину при удалении.
Сначала решил следить с помощью ReadDirectoryChangesW, и эта функция хорошо справляется, но не позволяет приостановить удаление, чтобы сделать копию.
Решил, что значит при запросе на удаление нужно перехватывать этот запрос на сервере, копировать файл в указанную папку-корзину, а затем уже выполнять удаление файла. Уже что только не перепробовал. И отсюда функции пробовал
http://www.wasm.ru/article.php?article=apihook_2, чтобы перехватить DeleteFileW и CreateFileW - нет реакции. Так же пробовал перехватить ZwCreateFile и ZwDeleteFile через Deviare... из ntdll. Скачал Deviare C# Console, она перехватывает CreateFileW при удалении файла из Total Commander, но из проводника - молчок (хотя может сама фильтрует - не знаю). Что вы можете посоветовать?
Подумал, что если не получится перехватить, то можно попытаться восстановить только что удалённый файл. Но это не будет работать надёжным способом, к тому же восстановление файла из удалённых - это не меньшая головная боль, а программ для восстановления с поддержкой командной строки (чтобы использовать через Delphi) я не знаю.
У меня windows 7, программа должна работать на Windows 2003 Server. Пишу в Turbo Delphi 2006.