Что нового

[Файловая система] Перехват события удаления файла

vcomp71

Осваивающий
Сообщения
431
Репутация
25
С помощью какой функции можно отловить событие удаление файла и быстренько, еще до совершения события, куда-нибудь его скопировать?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Автор
vcomp71

vcomp71

Осваивающий
Сообщения
431
Репутация
25
madmasles [?]
очень сомневаюсь. Может, лучше мониторить создание файлов и сразу делать копию?
Этот мы уже проходили. Слишком много файлов...
Теневое копирование еще поможет. Может быть. Тему про слежение за папками я уже создавал. Теперь папок стало больше и файлов.
Там еще одна проблема. Удалить могут файл, который год назад создавался и был не нужен, а теперь ОПА! нужен, поэтому мысль о перехвате самого события и стала актуальны.
 

Prog

Продвинутый
Сообщения
537
Репутация
65
Можно перехватить функцию NtDeleteFile() и копировать все удаляемые файлы.
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Prog
Не существует глобального и адекватного перехвата в ring3.

Vlasssov
Лучшее, что можно вам предложить - это написание драйвера.
Худшее - как уже выразились выше ( на мой взгляд это не вариант). http://ms-rem.narod.ru/hook/ApiHook1/apihook.htm
 

Prog

Продвинутый
Сообщения
537
Репутация
65
firex [?]
Не существует глобального и адекватного перехвата в ring3.
Я имел в виду в частности и ring0.
В ntoskrnl.lib есть функция _NtDeleteFile@4, а значит в ядре тоже.
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
А почему нельзя отловить окно, которое появляется перед удалением, подменить его своим? И если нажали кнопку "Да", то просто переместить файлы в нужное вам место.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Vlasssov [?]
С помощью какой функции можно отловить событие удаление файла и быстренько, еще до совершения события, куда-нибудь его скопировать?
быстренько скопировать все равно не получится. удаление происходит быстрее чем копирование. нужно тогда "заморозить" удаление до окончания копирования.
во всяком случае это костыли да еще какие. есть элементарные настройки разрешений. смотри скрин
установив запрет на удаление мы можем продолжать записывать в папку.
 

Вложения

  • Безымянный.jpg
    Безымянный.jpg
    74.5 КБ · Просмотры: 16
Автор
vcomp71

vcomp71

Осваивающий
Сообщения
431
Репутация
25
СН3СН2ОН сказал(а):
Возможно Вам поможет прочтение этого материала Жёсткая ссылка
joiner сказал(а):
Vlasssov [?]
С помощью какой функции можно отловить событие удаление файла и быстренько, еще до совершения события, куда-нибудь его скопировать?
быстренько скопировать все равно не получится. удаление происходит быстрее чем копирование. нужно тогда "заморозить" удаление до окончания копирования.
во всяком случае это костыли да еще какие. есть элементарные настройки разрешений. смотри скрин
установив запрет на удаление мы можем продолжать записывать в папку.
Не-а... Это не выход. Удалять файлы нужно, однако удаленные файлы могут хранится в течении определенного периода на другом носителе. Аналог корзины. А вот запретить удаление минуя корзину... Вот это тема. Это надо попробовать.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
это все детские игры. если ты администратор системы то и настраивай удаление. разграничивай права.

Vlasssov [?]
который год назад создавался и был не нужен, а теперь ОПА! нужен
нужен, но скорее всего можно и обойтись. разберись с важностью файлов, копируй в разные папки, архивируй. а то, что ты хочешь сделать это ерунда
 
Автор
vcomp71

vcomp71

Осваивающий
Сообщения
431
Репутация
25
joiner [?]
ужен, но скорее всего можно и обойтись. разберись с важностью файлов, копируй в разные папки, архивируй. а то, что ты хочешь сделать это ерунда
К сожалению, важность файла, определяю не я.
Чтобы было понятно: это база макетов типографии. Файлы доходят до 700 mb и архивация их не поможет, поскольку большинство в сжатом pdf.
Всё что можно было уже проверили. Единственный способ - либо теневое копирование на отдельный диск, либо вот это вот ерунда, когда удаленный файл сначала копируется, а потом удаляется. Так вот "удалений" бывает немного, сохранять информацию об удаленных файлах на неделю достаточно.

Вот тут еще запрет на удаление минуя корзину как-то надо рассмотреть... Раз событие в windows в Windows не существует.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Vlasssov [?]
Единственный способ - либо теневое копирование на отдельный диск
это лучший способ.потом запускать код на ручную синхронизацию. показываются какие файлы в обеих папках и удаляются те, которые уже не нужны.
но тут вопрос. а вдруг опять нужны будут? :smile: шутка
для перехвата придется писать свой драйвер. если все настолько серьезно, то нужно покупать софт для слежения.
 

Prog

Продвинутый
Сообщения
537
Репутация
65
joiner [?]
для перехвата придется писать свой драйвер
Для x86 системы написать вполне реально. А для x64 нужно еще заморочится с цифровой подписью.
 
Автор
vcomp71

vcomp71

Осваивающий
Сообщения
431
Репутация
25
joiner [?]
это лучший способ.потом запускать код на ручную синхронизацию. показываются какие файлы в обеих папках и удаляются те, которые уже не нужны. но тут вопрос. а вдруг опять нужны будут?
Это как с кэшем. 70% информации берется из кэша. Вопрос только в его величине.
 
Верх