次のコードを作成しました。それが役立つかどうかを確認してください:
//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();
}
}
結果:
D:\Projects\ConsoleApplication1\bin
IdentityReference = BUILTIN\管理者
InheritanceFlags = ContainerInherit、ObjectInherit
PropagationFlags = なし
AccessControlType = 許可
FileSystemRights = フルコントロール
IdentityReference
およびFileSystemRights
プロパティに注意してください。おそらく、ディレクトリを削除する前に、現在の ACL をそれらに対してテストする必要があります。