/// <summary> /// Overridden ProcessRecord /// </summary> protected override void ProcessRecord() { AccessMask mask = 0; switch (ParameterSetName) { case "FromAce": mask = AccessControlEntry.Mask; break; default: mask = AccessMask; mask |= MapGeneric(SpecificAccessType.File, FileAccess); mask |= MapGeneric(SpecificAccessType.File, FileDirectoryAccess); mask |= MapGeneric(SpecificAccessType.IoCompletion, IoCompletionAccess); mask |= MapGeneric(SpecificAccessType.Mutant, MutantAccess); mask |= MapGeneric(SpecificAccessType.Semaphore, SemaphoreAccess); mask |= MapGeneric(SpecificAccessType.RegistryTransaction, RegistryTransactionAccess); mask |= MapGeneric(SpecificAccessType.ALPCPort, AlpcPortAccess); mask |= MapGeneric(SpecificAccessType.Section, SectionAccess); mask |= MapGeneric(SpecificAccessType.Key, KeyAccess); mask |= MapGeneric(SpecificAccessType.Event, EventAccess); mask |= MapGeneric(SpecificAccessType.SymbolicLink, SymbolicLinkAccess); mask |= MapGeneric(SpecificAccessType.Token, TokenAccess); mask |= GenericAccess; mask |= MapGeneric(SpecificAccessType.Directory, DirectoryAccess); mask |= MapGeneric(SpecificAccessType.Thread, ThreadAccess); mask |= MapGeneric(SpecificAccessType.DebugObject, DebugObjectAccess); mask |= MapGeneric(SpecificAccessType.Job, JobAccess); mask |= MapGeneric(SpecificAccessType.Process, ProcessAccess); mask |= MapGeneric(SpecificAccessType.Transaction, TransactionAccess); mask |= MapGeneric(SpecificAccessType.TransactionManager, TransactionManagerAccess); mask |= MapGeneric(SpecificAccessType.ResourceManager, ResourceManagerAccess); mask |= MapGeneric(SpecificAccessType.Enlistment, EnlistmentAccess); mask |= (uint)ManadatoryLabelPolicy; break; } if (ToGenericAccess) { WriteObject(mask.ToGenericAccess()); } else if (ToMandatoryLabelPolicy) { WriteObject(mask.ToMandatoryLabelPolicy()); } else if (ToSpecificAccess == SpecificAccessType.None && ToTypeAccess == null) { WriteObject(mask); } else { NtType type = ToTypeAccess ?? GetTypeObject(ToSpecificAccess); WriteObject(mask.ToSpecificAccess(type.AccessRightsType)); } }
/// <summary> /// Overridden ProcessRecord /// </summary> protected override void ProcessRecord() { AccessMask mask = AccessMask; mask |= MapGeneric("File", File); mask |= MapGeneric("File", FileDirectory); mask |= MapGeneric("IoCompletion", IoCompletion); mask |= MapGeneric("Mutant", Mutant); mask |= MapGeneric("Semaphore", Semaphore); mask |= MapGeneric("RegistryTransaction", RegistryTransaction); mask |= MapGeneric("ALPC Port", AlpcPort); mask |= MapGeneric("Section", Section); mask |= MapGeneric("Key", Key); mask |= MapGeneric("Event", Event); mask |= MapGeneric("SymbolicLink", SymbolicLink); mask |= MapGeneric("Token", Token); mask |= Generic; mask |= MapGeneric("Directory", Directory); mask |= MapGeneric("Thread", Thread); mask |= MapGeneric("DebugObject", DebugObject); mask |= MapGeneric("Job", Job); mask |= MapGeneric("Process", Process); if (ToGenericAccess) { WriteObject(mask.ToGenericAccess()); } else if (String.IsNullOrEmpty(ToSpecificAccess)) { WriteObject(mask); } else { NtType type = NtType.GetTypeByName(ToSpecificAccess, false); if (type == null) { throw new ArgumentException(String.Format("'{0}' is not a valid NT type name", ToSpecificAccess)); } WriteObject(mask.ToSpecificAccess(type.AccessRightsType)); } }