Как определить, кто изменил файл? - PullRequest
4 голосов
/ 05 августа 2009

В Windows как программно определить, какая учетная запись пользователя в последний раз изменила или удалила файл?

Я знаю, что настройка аудита доступа к объектам может быть вариантом, но если я использую это, у меня возникает проблема с попыткой сопоставить записи журнала аудита с конкретными файлами ... звучит сложно и грязно! Я не могу думать ни о каком другом пути, поэтому у кого-нибудь есть какие-либо советы для этого подхода или какие-либо альтернативы?

Ответы [ 3 ]

4 голосов
/ 25 марта 2010

Вы можете разделить вашу проблему на две части:

  1. Запись в журнал при каждом обращении к файлу.
  2. Разобрать, отфильтровать и представить соответствующую информацию из журнала.

Из этих двух частей 1 запись в журнал является встроенной функцией аудита, как вы упомянули. Изобретать это было бы сложно и, вероятно, никогда не получилось бы так хорошо, как встроенная функциональность.

Я бы использовал встроенную функциональность для регистрации, настроив ACL аудита для этих файлов. Затем я сосредоточил бы свои усилия на создании хорошего интерфейса, который считывает журнал событий, отфильтровывает соответствующие события и представляет их так, чтобы они подходили и соответствовали вашим пользователям.

3 голосов
/ 24 марта 2010

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

Просто нужно авторизовать "владельца" приложения, которое пишет в файл.

Также см. Документацию MSDN

0 голосов
/ 05 ноября 2009

Единственный известный мне способ сделать это - настроить FileSystemWatcher и поддерживать его в рабочем состоянии. Да, и если он подключен к сетевому диску, он может случайно потерять соединение, поэтому может быть полезно принудительно отключать / переподключать каждые несколько часов, чтобы убедиться, что у него новое соединение.

...