仅将文件夹的访问权限设置为一个用户

时间:2011-09-27 06:48:17

标签: c# filesystem-access

我想使用C#将单个用户的权限分配给Windows中的文件夹,其他用户不应该能够打开或更改该文件夹的访问权限。

例如,如果我有3个用户 - Users组中的UserA,UserB和UserC。我想授予仅访问UserA的文件夹的权限。如果我拒绝访问用户组并允许UserA,则拒绝权限将优先,并且对UserA的访问也将被拒绝。

解决此问题的方法是拒绝Userb和Userc,并允许UserA访问该文件夹。但如果在设置用户帐户创建的权限后,该新帐户将拥有该文件夹的权限,则会出现问题。我不想有这种情况。

谢谢, Sujith

1 个答案:

答案 0 :(得分:6)

ACL中未提及的任何人的默认权限是“无权限”(An Empty DACL不授予访问权限)。因此,请阻止文件夹从其父级继承安全性,并仅为UserA分配权限。

(当然,这并不妨碍管理员取得所有权,然后为自己授予权限。没有什么可以阻止它)


E.g。创建一个名为C:\FruitBat的目录,该目录只能由用户DOMAIN\User1访问:

System.Security.AccessControl.DirectorySecurity dacl = new System.Security.AccessControl.DirectorySecurity();
dacl.AddAccessRule(new System.Security.AccessControl.FileSystemAccessRule(@"DOMAIN\User1",
    System.Security.AccessControl.FileSystemRights.FullControl,
    System.Security.AccessControl.InheritanceFlags.ContainerInherit |
    System.Security.AccessControl.InheritanceFlags.ObjectInherit,
    System.Security.AccessControl.PropagationFlags.None ,
    System.Security.AccessControl.AccessControlType.Allow));
System.IO.Directory.CreateDirectory(@"C:\FruitBat", dacl);