private static void SetAces(Task.TaskVerboseLoggingDelegate verboseLogger, Task.TaskWarningLoggingDelegate warningLogger, Task.ErrorLoggerDelegate errorLogger, IDirectorySession session, ADObjectId id, bool remove, params ActiveDirectoryAccessRule[] aces) { if (verboseLogger != null) { verboseLogger(Strings.InfoSetAces(id.DistinguishedName)); } if (session == null) { throw new ArgumentNullException("session"); } if (id == null) { throw new ArgumentNullException("id"); } RawSecurityDescriptor rawSecurityDescriptor = session.ReadSecurityDescriptor(id); rawSecurityDescriptor = DirectoryCommon.ApplyAcesOnSd(verboseLogger, warningLogger, errorLogger, id, rawSecurityDescriptor, remove, aces); if (rawSecurityDescriptor != null) { session.SaveSecurityDescriptor(id, rawSecurityDescriptor); } }