|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Мониторинг файлов и реестра
Приветствую.
Интересует реализация. Есть вот всякие унинсталлеры и тому подобные программы которые следят за тем, какие файлы и ключи реестра (скажем при инсталяции) куда записываются. Большинство делает типа снимок системы => Установка => второй снимок системы и поиск изменений. Неужели эти программы полностью копируют диск и реестр а потом сравнивают ? Или там создаётся типа драйвера - перехватчика, который отслеживает все вызовы аля CreateFile, ReadFile...инсталятора и просто их логирует? Интересует быстродействие процесса создания снимков и сравнения. Может есть исходники типо таких мониторов? Спасиб. |
#2
|
|||
|
|||
Ну, реестр относительно невелик, так что можно и скопировать.
По поводу диска. Нет необходимости копировать весь диск. Достаточно просто сделать дерево структуры диска (именя файлов и папок и их размер и дату последнего доступа). Тебе зачем это надо? А то для файловой системы по крайней мере есть встроенный в систему мониторинг (NotofyEvent), но для этого монитор должен быть активен. |
#3
|
|||
|
|||
Привет.
Часто программы устанавливаемые мусор после себя всякий в системе оставляют после удаления. Что б начисто удалять всё. Для этого. Ну и второе,это иногда например надо портаблировать программу, и надо знать про неё всё, куда "ходит", что "смотрит"... Что б потом все используемые файлы собрать и носить вместе с программой. Но основное, это конечно "качественная уборка" системы. Есть очень хорошие проги для этого, например Total Uninstall от Гаврилы (кстати тоже на делфях написана прога). Делает всё быстро, качественно... Но программа обрастает лишними функциями, которыми я никогда не пользуюсь. При этом она платная... Вот и хотел бы сделать альтернативный "монитор"+ функции отслеживания использования файлов мне не хватает. Для примера. Есть у меня некая программа. Весит, скажем пол гига. Но я использую только пару функций из неё. При этом в программе работает только 15 мегабайт всех файлов, остальные валяются бесполезным грузом. Вот было б очень здорово, что б монитор вёл как бы статистику. Какие файлы программы- монстра используются постоянно, какие раз в месяц, а какие вообще никогда. Ну думаю мысль понятна Нужен шпион за программой что делает в системе, "куда ходит" с "кем дружит"... ))) Последний раз редактировалось TEKTON, 12.10.2018 в 15:31. |
#4
|
|||
|
|||
Просто запомнить какие файлы и ключи реестра трогались при установке, можно и это достаточно легко. Просто перед установкой запоминаем текущее состояние, потом сравниваем с состоянием после установки.
А вот для отслеживания текущих изменений придется все-таки хакать API, т.к. кто открывал файл на файловой системе (и в реестре) не отражается. Поищи в блоге Rouse, так были хорошие примеры хука API функций. Т.е. хукаем функции открытия файлов, в хуке выясняем каким процессом отркыт файл/ключ и потом передаем управление самой функции. |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
TEKTON (12.10.2018)
|
#5
|
|||
|
|||
Цитата:
Цитата:
|
#6
|
|||
|
|||
Ну, для файловой системы строим дерево файловых объектов. Т.е. нам надо просто запомнить что и где хранится на диске. Для этого просто делаем вот такую структурку:
Код:
Type TFileSysItem=record Name : String; IsFolder : Boolean; Size : Int64; AccessDate : TDateTime; Items : TList; end; Зполняем это дерево через рекурсивную функцию с использованием FindFirst/FindNext/FindClose (примеров тьма даже на этом сайте). С реестром ничего подобного не делал, надо копаться что есть... по поводу перехвата функций API - см тут: http://alexander-bagel.blogspot.com/...intercept.html Последний раз редактировалось lmikle, 13.10.2018 в 00:45. |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
TEKTON (15.10.2018)
|