Уведомления

Группа в Telegram: @pythonsu

#1 Март 16, 2017 20:51:10

OzMod
Зарегистрирован: 2017-01-11
Сообщения: 38
Репутация: +  1  -
Профиль   Отправить e-mail  

Перехват событий Windows

Подскажите пожалуйста, как перехватить событие Windows - “удаления файла”

Офлайн

#2 Март 16, 2017 22:13:22

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Перехват событий Windows

слишком мало информации, нужно больше информации…
Вам нужно делать это вообще или мониторить удаление конкретной папки/файла/файлов в конкретной паке?
Какова цель перехвата? мониторинг или блокировка действия?



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Март 16, 2017 22:22:19)

Офлайн

#3 Март 16, 2017 22:44:46

OzMod
Зарегистрирован: 2017-01-11
Сообщения: 38
Репутация: +  1  -
Профиль   Отправить e-mail  

Перехват событий Windows

PEHDOM
мониторинг и скажем что бы при попытке удаления какого нибудь файла или папки, то они не попадали бы в карзину а перемещались бы в мою папку!

Офлайн

#4 Март 17, 2017 10:58:27

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Перехват событий Windows

Чтото вы неправильно выбрали ЯП для поставленой задач.
Самих мониторилок хоть жопй кушай, начиная с watchdog https://pypi.python.org/pypi/watchdog , QFileSystemWatcher и закначивая собраными из гонва и палок самописными модулями основывающимися на зацикливании os.listdir или использовании WinApi ReadDirectoryChanges, вот тут подробнее как самому написать подобный модуль http://timgolden.me.uk/python/win32_how_do_i/watch_directory_for_changes.html
Но у них есть существенный недостаток, они работают постфактум. тоесть вы получите сигнал что файл удален, уже после удаления файла.
Второй недостаток это скорость. всеже пайтон не самый быстрый ЯП. Возможны варианты когда ваш код не будет успевать за изменениями ФС (допустим удпляються десятки тысяч мелоких файлов), с разными последствиями, от просто пропуска некотороых файлов до ексепшинов.

В идеале вам надо писать на Си FileSystem Filter Driver, котороый в иерархии стоит выше драйвера ФС, способен видеть все запросы к ФС и при необходимости модифицировать или выполнять их. На подобном принципе работают, по моему, все антивирусы осуществляющие мониторинг в реальном времени. В инете есть даже туториалы как написать https://www.codeproject.com/Articles/43586/File-System-Filter-Driver-Tutorial или вот на русском https://habrahabr.ru/post/176739/
Ну или можете поискать уже готовую реализацию(наверняка ктото уже написал свой минифильтр с преферансом и стюардессами)
Но есть нюансы. для запуска драйвера нужно будет отключить проверку подписи драйверов. Или подписать драйвер самоподписным сертификатом(подробнее тут http://winitpro.ru/index.php/2014/05/08/kak-samostoyatelno-podpisat-drajver-dlya-windows-7/) . Или искать возможность подписать ваш драйвер уже довереным сертификатом(что наврядли)

Если написание драйвера фльтра ФС для вас слишком сложная задача то можно попробовать воспользоваться связкой watchdog(или аналог) + windows shadow copy. От сторожевой собаки вы получаете сообщение что такойто файл удален, и сразу вытягиваете его копию с теневого тома.
Подобный метод имет свои недостатки. Нужно чтобы служба теневого копирования была запущена на данном компьютере. Чтобы снапшоты делались намного чаще чем раз в месяц(теневые копии может делать сам скрипт). Если файл создали и удалили в интервале между созданием теневых копий, то востановить его не удастся. Для работы с теневыми копиями нужно повышение привилегий (Run as Administrator). Теневое копирование включается для тома целиком, и включить его для отдельной папки невозможно. При удалении файлы таки будут помещаться в корзину.(кстати а почему бы вам тогда не вытягивать их из корзины в свою папку?)
Microsoft не рекомендует создавать снапшоты чаще, чем раз в час(хотя я видел люди делали раз в 10 минут, но опять же, все зависит от обьема файлов и как часто они обновляются).Не работает для WinXP и ниже.
подробнее про пайтон и теневые копии:
https://pen-testing.sans.org/blog/2013/04/12/using-volume-shadow-copies-from-python
https://habrahabr.ru/post/241931/
https://github.com/sblosser/pyshadowcopy



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Март 17, 2017 11:45:58)

Офлайн

#5 Март 17, 2017 13:02:49

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Перехват событий Windows

PEHDOM
(кстати а почему бы вам тогда не вытягивать их из корзины в свою папку?)
+1
https://habrahabr.ru/post/150149/

Отредактировано vic57 (Март 17, 2017 13:13:21)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version