我必须分配一个文件夹的权限,它是使用C#.NET编程的子文件夹和文件。 我这样做如下:
var rootDic = @"C:\ROOT"; var identity = "NETWORK SERVICE"; //The name of a user account. try { var accessRule = new FileSystemAccessRule(identity, fileSystemRights: FileSystemRights.Modify, inheritanceFlags: InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, propagationFlags: PropagationFlags.InheritOnly, type: AccessControlType.Allow); var directoryInfo = new DirectoryInfo(rootDic); // Get a DirectorySecurity object that represents the current security settings. DirectorySecurity dSecurity = directoryInfo.GetAccessControl(); // Add the FileSystemAccessRule to the security settings. dSecurity.AddAccessRule(accessRule); // Set the new access settings. directoryInfo.SetAccessControl(dSecurity); } catch (Exception ex) { //... }
它确实分配了我的'C:\ ROOT'文件夹的权限。 但是它仅将权限分配给子文件夹和文件,而不是“ROOT”文件夹。
问:如何定义FileSystemAccessRule
实例以将权限分配给ROOT文件夹,子文件夹和文件?
您只需要移除PropagationFlags.InheritOnly
标志。 通过指定您声明ACE不应用于目标文件夹。 改用PropagationFlags.None
。 您可能会发现这个MSDN文章有帮助。