private static List <string> GetRuleLine(AccessRule rule) { return(new List <string>() { rule.Dir.DirPath, rule.Account.DisplayName, (rule.Type == AccessControlType.Deny ? "Deny " : "") + rule.SimpleRights }); }
private static void AddRule(List <AccessRule> accessRules, AccessRule rule) { if (IsExcluded(rule.Account)) { return; } var existing = accessRules.Find(r => r.Account.UserName == rule.Account.UserName); if (existing is null) { accessRules.Add(rule); } else { existing.Rights |= rule.Rights; } }
public static List <AccessRule> GetAccessRules(DirectoryPermissions dir, bool recursive = true) { List <AccessRule> accessRules = new List <AccessRule>(); var acCollection = new DirectoryInfo(dir.DirPath).GetAccessControl().GetAccessRules( true, true, typeof(System.Security.Principal.NTAccount)); foreach (FileSystemAccessRule ace in acCollection) { var rule = new AccessRule(dir, ace); if (!rule.IsExpandable) { AddRule(accessRules, rule); continue; } foreach (var subRule in rule.Expand()) { AddRule(accessRules, subRule); } } return(accessRules); }