FileSystemWatcher - минимальные разрешения, необходимые для целевых каталогов? - PullRequest
3 голосов
/ 20 октября 2010

Использование .NET FileSystemWatcher http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx для наблюдения за каталогом, полным файлов для: Изменено;Создано;Удаляется;Переименованные события.

Каковы минимальные права, необходимые учетной записи, работающей с FileSystemWatcher, на каталог, который она просматривает?

Кажется, что это будет READ, но я нигде не могу найти это документированное.

Спасибо

Ответы [ 2 ]

4 голосов
/ 07 января 2011

Если FileSystemWatcher основан на ReadDirectoryChangesW , ему необходимо:

  1. FILE_LIST_DIRECTORY в каталоге для мониторинга
  2. Привилегия SeBackupPrivilege , которая позволяет владельцу читать что угодно, минуя проверки доступа. Индикатором этого является флаг FILE_FLAG_BACKUP_SEMANTICS для CreateFile.

Это задокументировано в описании ReadDirectoryChangesW, указанном выше.

3 голосов
/ 20 октября 2010

Базовым API является ReadDirectoryChangesW.Единственное, что упомянуто в статье о библиотеке MSDN, это то, что для дескриптора каталога требуется право доступа FILE_LIST_DIRECTORY, и каталог необходимо открыть с помощью опции FILE_FLAG_BACKUP_SEMANTICS.

Код инфраструктуры .NET часто бывает полезен.Закрытый метод 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 только для асинхронных уведомлений.

...