FileSystemWatcher - 目标目录所需的最小权限?

时间:2010-10-20 00:57:50

标签: c# permissions file-permissions filesystemwatcher

使用.NET FileSystemWatcher http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx监视一个充满文件的目录:已更改;创建;删除;重命名事件。

运行FileSystemWatcher的帐户对其正在观看的目录所需的权限最小?

看起来好像是READ,但我无法在任何地方找到记录。

由于

2 个答案:

答案 0 :(得分:4)

如果FileSystemWatcher基于ReadDirectoryChangesW它需要:

  1. 要监控的目录上的FILE_LIST_DIRECTORY
  2. 允许持有人在绕过访问检查时读取任何内容的权限SeBackupPrivilege。对此的指示是标志FILE_FLAG_BACKUP_SEMANTICS to CreateFile。
  3. 这在上面链接的ReadDirectoryChangesW的描述中有记载。

答案 1 :(得分:3)

底层API是ReadDirectoryChangesW。 MSDN Library文章中唯一提到的是目录句柄上需要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用于异步通知。