指定されたフォルダーとそのすべてのコンテンツに適切なアクセス権があることを確認するために、C# で小さなユーティリティを作成しています (Authenticated Users
グループに完全なアクセス権を付与したい)。次のコードは、最上位フォルダーの ACL (アクセス制御リスト) を更新するために適切に機能するようです。
SecurityIdentifier allUsers = new SecurityIdentifier(WellKnownSidType.AuthenticatedUserSid, null);
InheritanceFlags iFlags = InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit;
FileSystemAccessRule newRule = new FileSystemAccessRule(allUsers,
FileSystemRights.FullControl, iFlags,
PropagationFlags.None, AccessControlType.Allow);
DirectoryInfo info = new DirectoryInfo(folderPath);
DirectorySecurity security = info.GetAccessControl();
security.AddAccessRule(newRule);
info.SetAccessControl(security);
ただし、この新しいアクセス ルールは、セキュリティ プロパティで [継承可能なアクセス許可を含める...] オプションがオフになっているサブフォルダーには反映されないことに気付きました。それは理にかなっています。したがって、私がやりたいことは、そのようなサブフォルダーに対してセキュリティ許可の継承をオンに戻すことです。
私の掘り下げは、ObjectSecurity.SetAccessRuleProtection
私が必要とするものの半分であるはずの方法を発見しました. ただし、親の DACL を既に継承しているオブジェクトに対して上記の方法をやみくもに使用するのは、ずさんなようです。したがって、権限の継承がオフになっているオブジェクトを特定したいのですが、この情報を返す対応するメソッドまたはプロパティが見つからないようです。ありますか?ここで何か不足していますか?