У меня есть консольное приложение, которое проверяет изменения, происходящие в файловой системе. Я пытаюсь выяснить, можно ли получить имя пользователя, который вносит изменения?
используйте класс FileSystemWatcher для документирования пользователя, который вносит изменения
Ответы (3)
Лучше включить аудит папки.
Щелкните папку правой кнопкой мыши, выберите «Свойства» > вкладка «Безопасность» > «Дополнительно» > вкладка «Аудит». Существуют варианты записи журнала аудита событий, происходящих в этой папке.
person
Joe White
schedule
27.12.2011
К сожалению, это потребует от меня повышенных разрешений для доступа к вкладке «Аудит».
- person MDL; 28.12.2011
Нет, это невозможно, файловая система NTFS или FAT, которую использует Windows, не записывает эту информацию. Лучшее, что вы можете узнать о файле, это когда он последний раз был изменен.
person
Darin Dimitrov
schedule
27.12.2011
Даже если я подключен к домену?
- person MDL; 28.12.2011
@MDL, домен не имеет ничего общего с тем, как файлы хранятся в ОС Windows, которая является NTFS или FAT, которая, как я уже говорил в своем ответе, не записывает эту информацию. Извиняюсь. Вы можете знать когда, но не кто.
- person Darin Dimitrov; 28.12.2011
Контроллер домена, конечно же, не имеет ни малейшего представления об этих изменениях. Могли бы вы представить, что все дополнительные метаданные передаются на машине даже при умеренной нагрузке?
- person user7116; 28.12.2011
@MDL, нет, нет. Ну, в практическом случае нет. Вы всегда можете написать свою собственную файловую систему, которая записывает эту информацию, но с практической точки зрения ее нет.
- person Darin Dimitrov; 28.12.2011
@MDL Это не имеет ничего общего с доменом ... это просто то, как работает система ... ядро очевидно знает, какой процесс / пользователь обращается / изменяет / записывает файл, но эта информация не передается в файловую систему ... и это определенно не передается из файловой системы в файловую систему...
- person Yahia; 28.12.2011
@MDL Единственный обходной путь - написать некоторый модуль уровня ядра, который находится между любым процессом, обращающимся к файловой системе, и кодом файловой системы на стороне ядра - это возможно, но НЕ из C # .
- person Yahia; 28.12.2011
видел этот вопрос раньше, и это возможно, но ему придется посмотреть на реализацию/использование WMI, а также на захват или написание кода soem, чтобы получить пользователя домена.
- person MethodMan; 28.12.2011
@MDL ... или драйвер фильтра файловой системы
- person Eugene Mayevski 'Callback; 28.12.2011
Вы не можете сделать это асинхронно с FileSystemWatcher, однако вы можете сделать это синхронно с помощью драйвера фильтра файловой системы. Драйвер позволяет получить имя пользователя учетной записи, выполняющей операцию.
person
Eugene Mayevski 'Callback
schedule
28.12.2011
share
Например, webdavsystem.com/server - person L.B   schedule 28.12.2011