我正在编写一个应用程序来管理用户对文件的访问.一个很长的故事的简短版本是我必须使用目录和文件priveleges来做到这一点.我们便宜的CEO没有文件管理系统......
无论如何...除了用户可以查看目录中的文件但实际上没有看到文件内容的情况之外,我已经完成了所有工作.(文件中可能存在敏感的HR数据.)
我尝试了FileSystemRights.ListDirectory,但似乎(发送MS文档)也将ReadData设置为true.我关闭ReadData(读取文件的能力),我突然再次无法访问该目录.两者似乎有联系.
有权获得许可的想法吗?
我目前的代码是:
SetSecurity(pth, usr, FileSystemRights.ListDirectory, AccessControlType.Allow); ... public void SetSecurity(string dirName, string account, FileSystemRights rights, AccessControlType controlType) { // Get a FileSecurity object that represents the // current security settings. DirectorySecurity dSecurity = Directory.GetAccessControl(dirName); dSecurity.AddAccessRule(new FileSystemAccessRule(account, rights, controlType)); // Set the new access settings. Directory.SetAccessControl(dirName, dSecurity); }
谢谢.
- 杰瑞
FileSystemRights枚举将ReadData和ListDirectory映射到值1,因此就.NET而言,这两者是100%等效的.
您是否尝试过Traverse而不是ListDirectory?
编辑:基于此知识库文章,似乎Windows XP认为它们也是相同的,只有一个仅适用于文件,一个仅适用于目录.
编辑2:只要将ReadData/ListDirectory访问规则设置为不被子对象继承,您就应该能够将其应用于目录而不将其应用于目录中的文件.FileSystemAccessRule类支持更改继承标志.