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

C# 仅将文件夹访问权限设置为一个用户,c#,filesystem-access,C#,Filesystem Access,我想使用C#将权限仅分配给单个用户到windows中的文件夹,其他用户不应能够打开或更改该文件夹的访问权限 例如,如果我在users组中有3个用户——UserA、UserB和UserC。我只想将访问文件夹的权限授予UserA。如果我拒绝访问users组并允许UserA,则拒绝权限将优先,对UserA的访问也将被拒绝 解决这个问题的一个方法是拒绝Userb和Userc,并允许UserA访问该文件夹。但是,如果在设置用户帐户创建的权限后,新帐户将拥有对该文件夹的权限,则会出现问题。我不想出现这种情况

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

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

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

谢谢,
Sujith

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

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


例如,要创建一个名为
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);

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

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


例如,要创建一个名为
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);

所以我想在e:\上设置权限。在这里,我们没有继承任何东西。当我创建新用户帐户时,该用户帐户正在访问此文件夹。这是不应该发生的。是否仍有拒绝访问e:\。我应该只向“创建了驱动器e:\”的用户授予权限(我使用SolFS创建新驱动器)。谢谢。@Sujith Kp-你可以在
E:
上创建
DirectoryInfo
对象,创建一个
dacl
,就像我上面的例子一样,然后你就可以摇我了!所以我想在e:\上设置权限。在这里,我们没有继承任何东西。当我创建新用户帐户时,该用户帐户正在访问此文件夹。这是不应该发生的。是否仍有拒绝访问e:\。我应该只向“创建了驱动器e:\”的用户授予权限(我使用SolFS创建新驱动器)。谢谢。@Sujith Kp-你可以在
E:
上创建
DirectoryInfo
对象,创建一个
dacl
,就像我上面的例子一样,然后你就可以摇我了!