FileSystemWatcher - минимальные разрешения, необходимые для целевых каталогов?
Использование.NET FileSystemWatcher http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx для мониторинга каталога, полного файлов для: Изменено; Создано; Удаляется; Переименованные события.
Каковы минимальные права, необходимые учетной записи, на которой работает FileSystemWatcher, на каталог, который она просматривает?
Кажется, что это будет ЧИТАТЬ, но я не могу найти это нигде документально.
Спасибо
2 ответа
Базовым API является ReadDirectoryChangesW. Единственное, что упомянуто в статье о библиотеке MSDN, это то, что право доступа FILE_LIST_DIRECTORY требуется для дескриптора каталога, и каталог должен быть открыт с параметром FILE_FLAG_BACKUP_SEMANTICS.
.NET Framework код часто полезен. Закрытый метод FileSystemWatcher.StartRaisingEvents() использует этот код для открытия дескриптора каталога:
directoryHandle = NativeMethods.CreateFile(
directory, // Directory name
UnsafeNativeMethods.FILE_LIST_DIRECTORY, // access (read-write) mode
UnsafeNativeMethods.FILE_SHARE_READ |
UnsafeNativeMethods.FILE_SHARE_DELETE |
UnsafeNativeMethods.FILE_SHARE_WRITE, // share mode
null, // security descriptor
UnsafeNativeMethods.OPEN_EXISTING, // how to create
UnsafeNativeMethods.FILE_FLAG_BACKUP_SEMANTICS |
UnsafeNativeMethods.FILE_FLAG_OVERLAPPED, // file attributes
new SafeFileHandle(IntPtr.Zero, false)); // file with attributes to copy
Используйте FILE_FLAG_OVERLAPPED только для асинхронных уведомлений.
Если FileSystemWatcher основан на ReadDirectoryChangesW, ему необходимо:
- FILE_LIST_DIRECTORY в каталоге для мониторинга
- Привилегия SeBackupPrivilege, которая позволяет владельцу читать что угодно, минуя проверки доступа. Индикатором этого является флаг FILE_FLAG_BACKUP_SEMANTICS для CreateFile.
Это задокументировано в описании ReadDirectoryChangesW, указанном выше.