使用.NET FileSystemWatcher http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx监视一个充满文件的目录:已更改;创建;删除;重命名事件。
运行FileSystemWatcher的帐户对其正在观看的目录所需的权限最小?
看起来好像是READ,但我无法在任何地方找到记录。
由于
答案 0 :(得分:4)
如果FileSystemWatcher基于ReadDirectoryChangesW它需要:
这在上面链接的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用于异步通知。