Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Контроль за состоянием директории 
:(
    Опции темы
Люда
Дата 17.4.2002, 13:57 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Мне надо отслеживать события, происходящие в определенном каталге (удаление, появление файлов и т.д.), как это сделать не знаю, может можно как-то вытащить время модификации директории или еще как-то. Помогите!!! :(
  Вверх
Grey
Дата 17.4.2002, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 25.3.2002

Репутация: нет
Всего: нет



У дериктории можно вытащить время последнего доступа
и время изменения, делается это точно также как с файлом,
надо вытащить атрибуты.
Для MFC подойдет CFile::GetStatus
Для WinApi GetFileAttributesEx

А что подрузамевается под отслеживать события в директории?
Тебе надо раз в день проверять не изменилось ли там что-нибудь
или сразу реагировать на изменения?
PM MAIL   Вверх
Люда
Дата 17.4.2002, 14:55 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Мне надо собратьстатистику, то есть постоянно отслеживать события и подсчитывать их кол-во
  Вверх
Vyacheslav
Дата 17.4.2002, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 9
Всего: 59



Если это NT, то можно включить аудит на данный каталог для требуемых событий, а затем программно с определенной периодичностью анализировать лог файл и собирать статистику


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Люда
Дата 18.4.2002, 10:31 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Спасибо, Grey, усе получилось! :D
Vyacheslav, можно поподробнее насчет аудита, у меня NT, статистику надо отслеживать нетолько на моем компе, но и на других в сети.
:notify
  Вверх
Vyacheslav
Дата 18.4.2002, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 9
Всего: 59



Указываю по W2000 (NT4 нет по рукой). Для выбранной папки заходите Свойства->Безопасность->Дополнительно->Аудит. Выбираете пользователей, которых хотите отслеживать. Если конкретно пользователи не интересуют, выбираете "Все", далее указываете типы  доступа, которые хотите отслеживать,например Вы можете отслеживать успех или неуспех  "Обзор папок/выполнение файлов", "Создание файлов/запись данных", "Удаление" и т.п. Можно задать отдельно регистрацию только успешно выполненных операций или отказов, можно и то и другое. Например, если кто-то попытается удалить файл, хотя эта операция ему не разрешена, событие будет отмечено как отказ при поытке удаления. Все это валиться  в файл C:\WINNT\System32\config\SecEvent.Evt. Это файл можно программно проанализировать. Если не ошибаюсь для серверов можно перенаправить вывод журнала не файл, а в таблицу MSSQL


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Vyacheslav
Дата 18.4.2002, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 9
Всего: 59



Там правда надо поработать, чтобы разобрать формат логфайла. Но имеется возможность в MMC  экспортировать журнал в обычный текстовый файл, анализ которого не составит труда


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
TwoK
  Дата 18.4.2002, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 25.3.2002

Репутация: нет
Всего: нет



Средствами виндов можно следить за событиями в отдельной папке с помощью FindFirstChangeNotification() / FindNextChangeNotification() / FindCloseChangeNotification. Я делал так, что на каждую папку создавал отдельный поток и смотрел, когда изменялось, время файлов. Сравнивал ну и соответственно дальше - по обстоятельствам.

То есть. При создании потока ставишь FirstChangeNotification -

FindFirstChangeNotification(path,false,FILE_NOTIFY_CHANGE_LAST_WRITE);

в обработчике потока ждешь WaitForSingleObject (тот, который получен при старте потока)  -

while(!Terminated)
{
  WaitForSingleObject(WatchHandle,INFINITE);
  while(WaitForSingleObject(WatchHandle,0) == WAIT_OBJECT_0)
  {
      FindNextChangeNotification(WatchHandle);
  }
...
//тут смотрим, что конкретно изменилось.
}

А как смотреть - сделать массив имен файлов и дат файлов. Ну и даты сравнивать.

Вот.


--------------------
Говорят, что население в стране все меньше и меньше. А народу по утрам в метро почему-то все больше и больше...
PM MAIL   Вверх
Люда
Дата 18.4.2002, 16:37 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











TwoK, спасибо огромное, то, что ты посоветовал, это то что надо, короче вся рассыпаюсь в благодарностях
:D  :laugh  :p
  Вверх
TwoK
Дата 18.4.2002, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 25.3.2002

Репутация: нет
Всего: нет



Всегда пжалста :D

Посмотри хелпы на FindFirst..... и так далее. Там много разных типов мониторинга, сдается мне, что здесь я мониторю только изменение какого-то файла, а не создание. Просто у меня сейчас хелпов нет - не проверить.


--------------------
Говорят, что население в стране все меньше и меньше. А народу по утрам в метро почему-то все больше и больше...
PM MAIL   Вверх
Люда
Дата 19.4.2002, 09:57 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ага, уже посмотрела и нашла, еще раз огромное спасибо, уже все в работе :D
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0462 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.