Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ ModifyAudit() [2/2]

bool System.Security.AccessControl.DirectoryObjectSecurity.ModifyAudit ( AccessControlModification modification,
ObjectAuditRule rule,
out bool modified )
inlineprivate

Definition at line 243 of file DirectoryObjectSecurity.cs.

244 {
245 bool flag = true;
246 if (base.SecurityDescriptor.SystemAcl == null)
247 {
248 if (modification == AccessControlModification.Remove || modification == AccessControlModification.RemoveAll || modification == AccessControlModification.RemoveSpecific)
249 {
250 modified = false;
251 return flag;
252 }
253 base.SecurityDescriptor.AddSystemAcl(GenericAcl.AclRevisionDS, 1);
254 }
255 else if ((modification == AccessControlModification.Add || modification == AccessControlModification.Set || modification == AccessControlModification.Reset) && rule.ObjectFlags != 0 && base.SecurityDescriptor.SystemAcl.Revision < GenericAcl.AclRevisionDS)
256 {
257 byte[] array = new byte[base.SecurityDescriptor.SystemAcl.BinaryLength];
258 base.SecurityDescriptor.SystemAcl.GetBinaryForm(array, 0);
259 array[0] = GenericAcl.AclRevisionDS;
260 base.SecurityDescriptor.SystemAcl = new SystemAcl(base.IsContainer, base.IsDS, new RawAcl(array, 0));
261 }
263 switch (modification)
264 {
266 base.SecurityDescriptor.SystemAcl.AddAudit(sid, rule);
267 break;
269 base.SecurityDescriptor.SystemAcl.SetAudit(sid, rule);
270 break;
271 case AccessControlModification.Reset:
272 base.SecurityDescriptor.SystemAcl.RemoveAudit(AuditFlags.Success | AuditFlags.Failure, sid, -1, InheritanceFlags.ContainerInherit, PropagationFlags.None, ObjectAceFlags.None, Guid.Empty, Guid.Empty);
273 base.SecurityDescriptor.SystemAcl.SetAudit(sid, rule);
274 break;
275 case AccessControlModification.Remove:
276 flag = base.SecurityDescriptor.SystemAcl.RemoveAudit(sid, rule);
277 break;
278 case AccessControlModification.RemoveAll:
279 flag = base.SecurityDescriptor.SystemAcl.RemoveAudit(AuditFlags.Success | AuditFlags.Failure, sid, -1, InheritanceFlags.ContainerInherit, PropagationFlags.None, ObjectAceFlags.None, Guid.Empty, Guid.Empty);
280 if (!flag)
281 {
283 }
284 break;
285 case AccessControlModification.RemoveSpecific:
286 base.SecurityDescriptor.SystemAcl.RemoveAuditSpecific(sid, rule);
287 break;
288 default:
289 throw new ArgumentOutOfRangeException("modification", System.SR.ArgumentOutOfRange_Enum);
290 }
291 modified = flag;
292 base.AuditRulesModified |= modified;
293 return flag;
294 }
static string ArgumentOutOfRange_Enum
Definition SR.cs:18
static string InvalidOperation_RemoveFail
Definition SR.cs:28
Definition SR.cs:7

References System.Security.AccessControl.GenericAcl.AclRevisionDS, System.SR.ArgumentOutOfRange_Enum, System.array, System.Guid.Empty, System.Security.AccessControl.AuthorizationRule.IdentityReference, System.SR.InvalidOperation_RemoveFail, System.Security.AccessControl.ObjectAuditRule.ObjectFlags, System.Security.AccessControl.SystemAcl, and System.Security.Principal.IdentityReference.Translate().

Referenced by System.Security.AccessControl.DirectoryObjectSecurity.AddAuditRule(), System.Security.AccessControl.DirectoryObjectSecurity.ModifyAudit(), System.Security.AccessControl.DirectoryObjectSecurity.RemoveAuditRule(), System.Security.AccessControl.DirectoryObjectSecurity.RemoveAuditRuleAll(), System.Security.AccessControl.DirectoryObjectSecurity.RemoveAuditRuleSpecific(), and System.Security.AccessControl.DirectoryObjectSecurity.SetAuditRule().