Как отследить изменения в файлах ......?
От: Dushes  
Дата: 06.05.02 08:40
Оценка:
Приветствую тебя, уважаемая публика!

Есть такая задача:
Имеется сервер — win2000server, на нем база данных в виде каталога с файлами формата DBF.
Различные пользователи обращаются к базе данных и производят в ней изменения. Дак вот, суть задачи в том, чтобы отследить изменения, производимые пользователями, то есть какой пользователь изменил какой файл и что конкретно он в нем сделал?

Прошу помочь, может быть кто решал такую задачу, или хотя бы советом, с чего начать.
Посоветовали использовать следующие функции:
FindFirstChangeNotification( .....
FindFirstChangeNotification( .....
получу объект, который моЖно использовать дальше в WaitForMultipleObjects —
А КАК ОТСЛЕДИТЬ ИЗМЕНЕНИЯ, ПРОИЗВЕДЕННЫЕ В НЕМ ?
плиз, помогите....


Кстати, тему уже создавал, зашел снова и ее не увидел — в чем проблема, сейчас что, стало возможным удалять тему из форума кому угодно или меня модератор удалил?


С уважением
Dushes

Re: Как отследить изменения в файлах ......?
От: Алекс Россия http://wise-orm.com
Дата: 06.05.02 09:35
Оценка:
Здравствуйте Dushes, Вы писали:

D>Приветствую тебя, уважаемая публика!


D>Есть такая задача:

D>Имеется сервер — win2000server, на нем база данных в виде каталога с файлами формата DBF.
D>Различные пользователи обращаются к базе данных и производят в ней изменения. Дак вот, суть задачи в том, чтобы отследить изменения, производимые пользователями, то есть какой пользователь изменил какой файл и что конкретно он в нем сделал?

D>Прошу помочь, может быть кто решал такую задачу, или хотя бы советом, с чего начать.

D>Посоветовали использовать следующие функции:
D>FindFirstChangeNotification( .....
D>FindFirstChangeNotification( .....
D>получу объект, который моЖно использовать дальше в WaitForMultipleObjects —
D>А КАК ОТСЛЕДИТЬ ИЗМЕНЕНИЯ, ПРОИЗВЕДЕННЫЕ В НЕМ ?
D>плиз, помогите....


D>Кстати, тему уже создавал, зашел снова и ее не увидел — в чем проблема, сейчас что, стало возможным удалять тему из форума кому угодно или меня модератор удалил?



D>С уважением

D>Dushes

D>


поставь аудит
Re[2]: Как отследить изменения в файлах ......?
От: Dushes  
Дата: 06.05.02 11:00
Оценка:
Здравствуйте Алекс, Вы писали:


А>поставь аудит


И что мне это даст, мне нужно отследить, какой пользователь, что изменил, в каком файле, когда и что конкретно он изменил.....

С уважением
Dushes
Re[3]: Как отследить изменения в файлах ......?
От: Алекс Россия http://wise-orm.com
Дата: 06.05.02 11:27
Оценка: 2 (1)
Здравствуйте Dushes, Вы писали:

D>Здравствуйте Алекс, Вы писали:



А>>поставь аудит


D>И что мне это даст, мне нужно отследить, какой пользователь, что изменил, в каком файле, когда и что конкретно он изменил.....


D>С уважением

D>Dushes

Аудит — какой пользователь изменил
FindFirstChangeNotification и FindNextChangeNotification — в каком файле изменил
А что он изменил нужно определять так:
1. Открываешь и считываешь содержимое файла
2. В цикле вызываешь FindNextChangeNotification() и WaitForMultipleObjects()
3. Открываешь и считываешь содержимое файла
4. Сравниваешь содержимое с предыдущий копией
5. Фиксируешь изменение
Re[4]: Как отследить изменения в файлах ......?
От: Dushes  
Дата: 06.05.02 11:34
Оценка:
Здравствуйте Алекс, Вы писали:

А>Здравствуйте Dushes, Вы писали:


D>>Здравствуйте Алекс, Вы писали:



А>>>поставь аудит


D>>И что мне это даст, мне нужно отследить, какой пользователь, что изменил, в каком файле, когда и что конкретно он изменил.....


D>>С уважением

D>>Dushes

А>Аудит — какой пользователь изменил

А>FindFirstChangeNotification и FindNextChangeNotification — в каком файле изменил
А>А что он изменил нужно определять так:
А>1. Открываешь и считываешь содержимое файла
А>2. В цикле вызываешь FindNextChangeNotification() и WaitForMultipleObjects()
А>3. Открываешь и считываешь содержимое файла
А>4. Сравниваешь содержимое с предыдущий копией
А>5. Фиксируешь изменение

А попроще никак нельзя? Наверняка в NTFS или в NetBIOS есть информация о том, какой пользователь что изменил, какуй цепочку байт записал или какую удалил..... Пункт 4 уж больно дорогостоящий, весь сервер будет работать только на сравнение копий текущей и предыдущей, такой вариант никак не пойдет. Мне нужно отследить цепочки байт, пересылаемые в файл от конкретного пользователя, собрав такие цепочки в конце дня и наложив на предыдущую копию базы, я могу получить текущую копию, а затем ее уже сравнивать с предыдущей, таким образом увижу все изменения, которые произвел данный пользователь.

Dushes
Re[4]: Как отследить изменения в файлах ......?
От: OlegO Россия http://www.mediachase.ru
Дата: 06.05.02 11:35
Оценка:
Здравствуйте Алекс, Вы писали:

А>Здравствуйте Dushes, Вы писали:


D>>Здравствуйте Алекс, Вы писали:



А>>>поставь аудит


D>>И что мне это даст, мне нужно отследить, какой пользователь, что изменил, в каком файле, когда и что конкретно он изменил.....


D>>С уважением

D>>Dushes

А>Аудит — какой пользователь изменил

А>FindFirstChangeNotification и FindNextChangeNotification — в каком файле изменил
А>А что он изменил нужно определять так:
А>1. Открываешь и считываешь содержимое файла
А>2. В цикле вызываешь FindNextChangeNotification() и WaitForMultipleObjects()
А>3. Открываешь и считываешь содержимое файла
А>4. Сравниваешь содержимое с предыдущий копией
А>5. Фиксируешь изменение

Правдо одно но !!!

А если открыла чужая прога, то не факт, что тебе дадут его прочитать.
С уважением, OlegO.
Re[5]: Как отследить изменения в файлах ......?
От: Dushes  
Дата: 06.05.02 11:43
Оценка:
Здравствуйте OlegO, Вы писали:

OO>Здравствуйте Алекс, Вы писали:


А>>Здравствуйте Dushes, Вы писали:


D>>>Здравствуйте Алекс, Вы писали:



А>>>>поставь аудит


D>>>И что мне это даст, мне нужно отследить, какой пользователь, что изменил, в каком файле, когда и что конкретно он изменил.....


D>>>С уважением

D>>>Dushes

А>>Аудит — какой пользователь изменил

А>>FindFirstChangeNotification и FindNextChangeNotification — в каком файле изменил
А>>А что он изменил нужно определять так:
А>>1. Открываешь и считываешь содержимое файла
А>>2. В цикле вызываешь FindNextChangeNotification() и WaitForMultipleObjects()
А>>3. Открываешь и считываешь содержимое файла
А>>4. Сравниваешь содержимое с предыдущий копией
А>>5. Фиксируешь изменение

OO>Правдо одно но !!!


OO>А если открыла чужая прога, то не факт, что тебе дадут его прочитать.


Сама прога должна висеть на сервере, ей указывается каталог, за которым она должна присматривать, если происходит операция записи в файл, должны отслеживаться изменения на данном этапе — только как это сделать проще всего? Можно ли повесить хук на файловые операции записи? Ведь наверняка можно найти простое решение, не используя слуюбы виндового аудита, который кстати мало чем поможет в данной ситуации......
Люди, поможите....

Dushes
Re[6]: Как отследить изменения в файлах ......?
От: OlegO Россия http://www.mediachase.ru
Дата: 06.05.02 11:49
Оценка:
Здравствуйте Dushes, Вы писали:

D>Сама прога должна висеть на сервере, ей указывается каталог, за которым она должна присматривать, если происходит операция записи в файл, должны отслеживаться изменения на данном этапе — только как это сделать проще всего? Можно ли повесить хук на файловые операции записи? Ведь наверняка можно найти простое решение, не используя слуюбы виндового аудита, который кстати мало чем поможет в данной ситуации......

D>Люди, поможите....

D>Dushes


Посмотри Src Filemon'а на www.sysinternals.com может подойдет
С уважением, OlegO.
Re: Как отследить изменения в файлах ......?
От: Dima2  
Дата: 06.05.02 19:12
Оценка:
Здравствуйте Dushes, Вы писали:

D>Кстати, тему уже создавал, зашел снова и ее не увидел — в чем проблема, сейчас что, стало возможным удалять тему из форума кому угодно или меня модератор удалил?


Да ты видно давно не был на сайте.
Введу тебя в курс дела. Сейчас начала работать система автомодерирования. Твой вопрос перенесли в "Прочее" 3 человека.
Когда было два голоса за перенос я проголосовал чтобы оставить на месте, но видно нашелся кто-то третий. Кстати я не понимаю почему этому вопросу больше место в прочем чем в WinAPI. Когда мы чистили форум C++, то все вопросы касающиеся системного программитрования под Windows и т.п. подобные переносили в WinAPI.
Опять повторю, что надо выработать правила переноса тем, а то начинается хаос. И одно из правил должно быть "презумпция невиновности", т.е. если под сомнением к какому форуму вопрос ближе, то оставлять его на месте.
Re[7]: Как отследить изменения в файлах ......?
От: Dushes  
Дата: 07.05.02 06:46
Оценка:
Здравствуйте OlegO, Вы писали:

OO>Посмотри Src Filemon'а на www.sysinternals.com может подойдет


Скачал данный пакет с исходными текстами, сижу понемногу разбираю, как все это сделано. Делается это через Service Control Manager (SCM). Как с ним работать, представления не имею. Может быть, кто подскажет, где можно найти русскоязычное описание для работы с сервисными службами WinNT.

С уважением
Dushes
Re[8]: Как отследить изменения в файлах ......?
От: Алекс Россия http://wise-orm.com
Дата: 07.05.02 08:49
Оценка:
Здравствуйте Dushes, Вы писали:

D>Здравствуйте OlegO, Вы писали:


OO>>Посмотри Src Filemon'а на www.sysinternals.com может подойдет


D>Скачал данный пакет с исходными текстами, сижу понемногу разбираю, как все это сделано. Делается это через Service Control Manager (SCM). Как с ним работать, представления не имею. Может быть, кто подскажет, где можно найти русскоязычное описание для работы с сервисными службами WinNT.


D>С уважением

D> Dushes
cool site
Автор(ы): Александр Федотов
Дата: 24.03.2002
В статье рассматриваются вопросы управления системными
службами Windows NT: чтение и изменение конфигурации, запуск и
остановка, установка и удаление служб. В статье описана большинство
функций управления службами, использование каждой функции
продемонстрировано примерами.
Re: Как отследить изменения в файлах ......?
От: Аноним  
Дата: 08.05.02 16:54
Оценка:
Здравствуйте Dushes, Вы писали:

D>Приветствую тебя, уважаемая публика!


D>Есть такая задача:

D>Имеется сервер — win2000server, на нем база данных в виде каталога с файлами формата DBF.
D>Различные пользователи обращаются к базе данных и производят в ней изменения. Дак вот, суть задачи в том, чтобы отследить изменения, производимые пользователями, то есть какой пользователь изменил какой файл и что конкретно он в нем сделал?

Попробуй сделать ShellExtension, т.е. COM-объект, который имитирует каталог, а на
самом деле DLL-ка. А сам Extension уже будет писать в настоящий файл. Только прокатит
ли такой фокус? Но теоретически вроде можно. Пример — Zip Folders.
Re[8]: Как отследить изменения в файлах ......?
От: vasketsov Россия http://ntprog.by.ru
Дата: 12.05.02 09:14
Оценка:
Здравствуйте Dushes, Вы писали:

D>Здравствуйте OlegO, Вы писали:


OO>>Посмотри Src Filemon'а на www.sysinternals.com может подойдет


D>Делается это через Service Control Manager (SCM). Как с ним работать, представления не имею. Может быть, кто подскажет, где можно найти русскоязычное описание для работы с сервисными службами WinNT.


Это вообще не при чем.
SCM вызывается программой только для того, чтоб загрузить драйвер.

Советую немного не это, а код RegMon того же Руссиновича.
Там попроще техника.
Фишка в изменении драйвером таблицы системных вызовов.
Так что разбирайся в коде драйвера.
А подменять придется те функции, где есть в имени File, смотри что NTOSKRNL.EXE экспортит, формат функций какие захочешь я кину.
Это самый простой вариант, по крайней мере в ZwReadFile ты получишь именно то, что прога писала в файл. А дальше уж сам решишь, или пропускать вызов, или сразу вернуть STATUS_ACCESS_DENIED.
Васкецов Сергей
http://registry.km.ru
Re[8]: Как отследить изменения в файлах ......?
От: KiViN  
Дата: 16.03.03 18:00
Оценка:
Здравствуйте, Dushes, Вы писали:

D>Здравствуйте OlegO, Вы писали:


OO>>Посмотри Src Filemon'а на www.sysinternals.com может подойдет


D>Скачал данный пакет с исходными текстами, сижу понемногу разбираю, как все это сделано. Делается это через Service Control Manager (SCM). Как с ним работать, представления не имею. Может быть, кто подскажет, где можно найти русскоязычное описание для работы с сервисными службами WinNT.


D>С уважением

D> Dushes

А где там есть исходники filemona? Если есть исходники просьба поделится на kivi_@mail.ru. Заранее спасибо
Re[9]: Как отследить изменения в файлах ......?
От: SiAVoL Россия  
Дата: 17.03.03 08:53
Оценка:
Здравствуйте, KiViN, Вы писали:

Узнать о самом факте изменения можно с помощью FindFirstChangeNotification, а о сущности изменения через ReadDirectoryChangesW
... << RSDN@Home 1.0 beta 6a >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.