I built the following code. Please see if this helps:
//using System.IO; //using System.Security.AccessControl; //using System.Security.Principal; string[] directories = Directory.GetDirectories( Path.Combine(Environment.CurrentDirectory, @"..\.."), "*", SearchOption.AllDirectories); foreach (string directory in directories) { DirectoryInfo info = new DirectoryInfo(directory); DirectorySecurity security = info.GetAccessControl(); Console.WriteLine(info.FullName); foreach (FileSystemAccessRule rule in security.GetAccessRules(true, true, typeof(NTAccount))) { Console.WriteLine("\tIdentityReference = {0}", rule.IdentityReference); Console.WriteLine("\tInheritanceFlags = {0}", rule.InheritanceFlags ); Console.WriteLine("\tPropagationFlags = {0}", rule.PropagationFlags ); Console.WriteLine("\tAccessControlType = {0}", rule.AccessControlType); Console.WriteLine("\tFileSystemRights = {0}", rule.FileSystemRights ); Console.WriteLine(); } }
Result:
D: \ Projects \ ConsoleApplication1 \ bin
IdentityReference = BUILTIN \ Administrators
InheritanceFlags = ContainerInherit, ObjectInherit
PropagationFlags = None
AccessControlType = Allow
FileSystemRights = FullControl
Note that the IdentityReference and FileSystemRights properties; you should probably check your current ACL against them before trying to delete the directory.
source share