8 : base(isContainer: true, isDS: true)
13 : base(securityDescriptor)
15 if (securityDescriptor ==
null)
47 if ((base.SecurityDescriptor.ControlFlags &
ControlFlags.DiscretionaryAclPresent) != 0)
49 commonAcl = base.SecurityDescriptor.DiscretionaryAcl;
52 else if ((base.SecurityDescriptor.ControlFlags &
ControlFlags.SystemAclPresent) != 0)
54 commonAcl = base.SecurityDescriptor.SystemAcl;
56 if (commonAcl ==
null)
58 return authorizationRuleCollection;
64 for (
int i = 0; i < commonAcl.
Count; i++)
67 if (qualifiedAce ==
null || qualifiedAce.
IsCallback)
84 identityReferenceCollection = identityReferenceCollection2.
Translate(targetType);
86 for (
int j = 0; j < commonAcl.
Count; j++)
89 if (qualifiedAce2 ==
null)
91 qualifiedAce2 = commonAcl[j] as
ObjectAce;
92 if (qualifiedAce2 ==
null)
120 if (qualifiedAce2 is
ObjectAce objectAce)
122 authorizationRuleCollection.
AddRule(
AccessRuleFactory(identityReference, objectAce.AccessMask, objectAce.IsInherited, objectAce.InheritanceFlags, objectAce.PropagationFlags,
type, objectAce.ObjectAceType, objectAce.InheritedObjectAceType));
126 if (!(commonAce ==
null))
131 else if (qualifiedAce2 is
ObjectAce objectAce2)
133 authorizationRuleCollection.
AddRule(
AuditRuleFactory(identityReference, objectAce2.AccessMask, objectAce2.IsInherited, objectAce2.InheritanceFlags, objectAce2.PropagationFlags, objectAce2.AuditFlags, objectAce2.ObjectAceType, objectAce2.InheritedObjectAceType));
138 if (!(commonAce2 ==
null))
144 return authorizationRuleCollection;
155 if (base.SecurityDescriptor.DiscretionaryAcl ==
null)
166 byte[]
array =
new byte[base.SecurityDescriptor.DiscretionaryAcl.BinaryLength];
167 base.SecurityDescriptor.DiscretionaryAcl.GetBinaryForm(
array, 0);
174 switch (modification)
177 base.SecurityDescriptor.DiscretionaryAcl.AddAccess(
AccessControlType.Allow, sid, rule);
180 base.SecurityDescriptor.DiscretionaryAcl.SetAccess(
AccessControlType.Allow, sid, rule);
184 base.SecurityDescriptor.DiscretionaryAcl.SetAccess(
AccessControlType.Allow, sid, rule);
187 flag = base.SecurityDescriptor.DiscretionaryAcl.RemoveAccess(
AccessControlType.Allow, sid, rule);
197 base.SecurityDescriptor.DiscretionaryAcl.RemoveAccessSpecific(
AccessControlType.Allow, sid, rule);
209 switch (modification)
212 base.SecurityDescriptor.DiscretionaryAcl.AddAccess(
AccessControlType.Deny, sid, rule);
215 base.SecurityDescriptor.DiscretionaryAcl.SetAccess(
AccessControlType.Deny, sid, rule);
219 base.SecurityDescriptor.DiscretionaryAcl.SetAccess(
AccessControlType.Deny, sid, rule);
222 flag = base.SecurityDescriptor.DiscretionaryAcl.RemoveAccess(
AccessControlType.Deny, sid, rule);
232 base.SecurityDescriptor.DiscretionaryAcl.RemoveAccessSpecific(
AccessControlType.Deny, sid, rule);
239 base.AccessRulesModified |= modified;
246 if (base.SecurityDescriptor.SystemAcl ==
null)
257 byte[]
array =
new byte[base.SecurityDescriptor.SystemAcl.BinaryLength];
258 base.SecurityDescriptor.SystemAcl.GetBinaryForm(
array, 0);
260 base.SecurityDescriptor.SystemAcl =
new SystemAcl(base.IsContainer, base.IsDS,
new RawAcl(
array, 0));
263 switch (modification)
266 base.SecurityDescriptor.SystemAcl.AddAudit(sid, rule);
269 base.SecurityDescriptor.SystemAcl.SetAudit(sid, rule);
273 base.SecurityDescriptor.SystemAcl.SetAudit(sid, rule);
276 flag = base.SecurityDescriptor.SystemAcl.RemoveAudit(sid, rule);
286 base.SecurityDescriptor.SystemAcl.RemoveAuditSpecific(sid, rule);
292 base.AuditRulesModified |= modified;
376 if (base.SecurityDescriptor ==
null)
398 if (base.SecurityDescriptor !=
null)
415 if (base.SecurityDescriptor ==
null)
518 return GetRules(access:
true, includeExplicit, includeInherited, targetType);
523 return GetRules(access:
false, includeExplicit, includeInherited, targetType);
static Exception ByDesign
static string Arg_MustBeIdentityReferenceType
static string ArgumentOutOfRange_Enum
static string Format(string resourceFormat, object p1)
static string TypeUnrecognized_AccessControl
static string InvalidOperation_RemoveFail
AccessControlType AccessControlType
void AddRule(AuthorizationRule? rule)
IdentityReference IdentityReference
void SetAccessRule(ObjectAccessRule rule)
AuthorizationRuleCollection GetAuditRules(bool includeExplicit, bool includeInherited, Type targetType)
void RemoveAccessRuleAll(ObjectAccessRule rule)
bool RemoveAccessRule(ObjectAccessRule rule)
virtual AuditRule AuditRuleFactory(IdentityReference identityReference, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AuditFlags flags, Guid objectType, Guid inheritedObjectType)
void RemoveAuditRuleSpecific(ObjectAuditRule rule)
void RemoveAccessRuleSpecific(ObjectAccessRule rule)
bool RemoveAuditRule(ObjectAuditRule rule)
static bool IsValidTargetTypeStatic(Type targetType)
virtual AccessRule AccessRuleFactory(IdentityReference identityReference, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AccessControlType type, Guid objectType, Guid inheritedObjectType)
void RemoveAuditRuleAll(ObjectAuditRule rule)
DirectoryObjectSecurity()
bool ModifyAudit(AccessControlModification modification, ObjectAuditRule rule, out bool modified)
bool ModifyAccess(AccessControlModification modification, ObjectAccessRule rule, out bool modified)
void SetAuditRule(ObjectAuditRule rule)
override bool ModifyAccess(AccessControlModification modification, AccessRule rule, out bool modified)
void AddAuditRule(ObjectAuditRule rule)
AuthorizationRuleCollection GetRules(bool access, bool includeExplicit, bool includeInherited, Type targetType)
override bool ModifyAudit(AccessControlModification modification, AuditRule rule, out bool modified)
void ResetAccessRule(ObjectAccessRule rule)
AuthorizationRuleCollection GetAccessRules(bool includeExplicit, bool includeInherited, Type targetType)
DirectoryObjectSecurity(CommonSecurityDescriptor securityDescriptor)
void AddAccessRule(ObjectAccessRule rule)
InheritanceFlags InheritanceFlags
PropagationFlags PropagationFlags
static readonly byte AclRevisionDS
SecurityIdentifier SecurityIdentifier
ObjectAceFlags ObjectFlags
ObjectAceFlags ObjectFlags
AceQualifier AceQualifier
void Add(IdentityReference identity)
IdentityReferenceCollection Translate(Type targetType)
IdentityReference Translate(Type targetType)
AccessControlModification
static readonly Guid Empty