System.IO.Pipes.PipeSecurity.RemoveAccessRuleSpecific C# (CSharp) Method

RemoveAccessRuleSpecific() public method

public RemoveAccessRuleSpecific ( PipeAccessRule rule ) : void
rule PipeAccessRule
return void
        public void RemoveAccessRuleSpecific(PipeAccessRule rule)
        {
            if (rule == null)
            {
                throw new ArgumentNullException(nameof(rule));
            }

            // If the rule to be removed matches what is there currently then 
            // remove it unaltered. That is, don't mask off the Synchronize bit
            AuthorizationRuleCollection rules = GetAccessRules(true, true,
                    rule.IdentityReference.GetType());

            for (int i = 0; i < rules.Count; i++)
            {
                PipeAccessRule fsrule = rules[i] as PipeAccessRule;

                if ((fsrule != null) && (fsrule.PipeAccessRights == rule.PipeAccessRights)
                    && (fsrule.IdentityReference == rule.IdentityReference)
                    && (fsrule.AccessControlType == rule.AccessControlType))
                {
                    base.RemoveAccessRuleSpecific(rule);
                    return;
                }
            }

            // It wasn't an exact match so try masking the sychronize bit (that is 
            // automatically added for Allow) before removing the ACL. The logic 
            // here should be same as Deny and hence fake a call to 
            // AccessMaskFromRights as though the ACL is for Deny
            if (rule.PipeAccessRights != PipeAccessRights.FullControl)
            {
                base.RemoveAccessRuleSpecific(new PipeAccessRule(rule.IdentityReference,
                    PipeAccessRule.AccessMaskFromRights(rule.PipeAccessRights, AccessControlType.Deny),
                    false,
                    rule.AccessControlType));
            }
            else
            {
                base.RemoveAccessRuleSpecific(rule);
            }
        }

Same methods

PipeSecurity::RemoveAccessRuleSpecific ( System rule ) : void