我试图在远景计算机上设置文件夹及其所有子项的权限.我到目前为止的代码是这样的.
public static void SetPermissions(string dir) { DirectoryInfo info = new DirectoryInfo(dir); DirectorySecurity ds = info.GetAccessControl(); ds.AddAccessRule(new FileSystemAccessRule(@"BUILTIN\Users", FileSystemRights.FullControl, InheritanceFlags.ContainerInherit, PropagationFlags.None, AccessControlType.Allow)); info.SetAccessControl(ds); }
然而,它并没有像我期望的那样工作.
即使我以管理员身份运行代码,它也不会设置权限.
我正在使用的文件夹位于C:\ ProgramData\<我的文件夹>,我可以手动更改它的权限.
任何人都想指出我正确的方向.
所以答案是双重的.首先在文件夹上设置权限之前创建一个子文件夹,然后我需要或者在权限的另一个标志上创建它,以便文件夹和文件都继承权限.
public static void SetPermissions(string dir) { DirectoryInfo info = new DirectoryInfo(dir); DirectorySecurity ds = info.GetAccessControl(); ds.AddAccessRule(new FileSystemAccessRule(@"BUILTIN\Users", FileSystemRights.FullControl, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.None, AccessControlType.Allow)); info.SetAccessControl(ds); }
之后,每件事似乎都有效.