在C#(2.0)中,如何移除目录的所有权限,以便我可以限制访问。我会将访问权限添加回受限用户集合中。
private static DirectorySecurity RemoveExplicitSecurity(DirectorySecurity directorySecurity)
{
AuthorizationRuleCollection rules = directorySecurity.GetAccessRules(true, false, typeof(System.Security.Principal.NTAccount));
foreach (FileSystemAccessRule rule in rules)
directorySecurity.RemoveAccessRule(rule);
return directorySecurity;
}
这显然是用作下列内容:
DirectoryInfo directoryInfo = new DirectoryInfo(path);
DirectorySecurity directorySecurity = directoryInfo.GetAccessControl();
directorySecurity = RemoveExplicitSecurity(directorySecurity);
Directory.SetAccessControl(path, directorySecurity);
查看 System.Security.AccessControl 命名空间中的类,尤其是 DirectorySecurity.RemoveAccessRule 方法。
同时,请注意如果您移除了所有权限,则将无法之后添加任何权限 :-)
使用System.IO.Directory.GetAccessControl()方法获取FileSecurity对象并进行编辑。
GetAccessRules
返回的权限列表在传回RemoveAccessRule
时并不总是有效的。当访问级别的值不存在于FileSystemRights
枚举中时会发生这种情况,更多信息请参见此处 - https://dev59.com/xGkw5IYBdhLWcg3wus7K#9694894 - Josh G