UpdateControlFlags() 개인적인 메소드

private UpdateControlFlags ( ControlFlags flagsToUpdate, ControlFlags newFlags ) : void
flagsToUpdate ControlFlags
newFlags ControlFlags
리턴 void
예제 #1
0
        private void UpdateWithNewSecurityDescriptor(RawSecurityDescriptor newOne, AccessControlSections includeSections)
        {
            Contract.Assert(newOne != null, "Must not supply a null parameter here");

            if ((includeSections & AccessControlSections.Owner) != 0)
            {
                _ownerModified            = true;
                _securityDescriptor.Owner = newOne.Owner;
            }

            if ((includeSections & AccessControlSections.Group) != 0)
            {
                _groupModified            = true;
                _securityDescriptor.Group = newOne.Group;
            }

            if ((includeSections & AccessControlSections.Audit) != 0)
            {
                _saclModified = true;
                if (newOne.SystemAcl != null)
                {
                    _securityDescriptor.SystemAcl = new SystemAcl(IsContainer, IsDS, newOne.SystemAcl, true);
                }
                else
                {
                    _securityDescriptor.SystemAcl = null;
                }
                // carry forward the SACL related control flags
                _securityDescriptor.UpdateControlFlags(SACL_CONTROL_FLAGS, (ControlFlags)(newOne.ControlFlags & SACL_CONTROL_FLAGS));
            }

            if ((includeSections & AccessControlSections.Access) != 0)
            {
                _daclModified = true;
                if (newOne.DiscretionaryAcl != null)
                {
                    _securityDescriptor.DiscretionaryAcl = new DiscretionaryAcl(IsContainer, IsDS, newOne.DiscretionaryAcl, true);
                }
                else
                {
                    _securityDescriptor.DiscretionaryAcl = null;
                }
                // by the following property set, the _securityDescriptor's control flags
                // may contains DACL present flag. That needs to be carried forward! Therefore, we OR
                // the current _securityDescriptor.s DACL present flag.
                ControlFlags daclFlag = (_securityDescriptor.ControlFlags & ControlFlags.DiscretionaryAclPresent);

                _securityDescriptor.UpdateControlFlags(DACL_CONTROL_FLAGS,
                                                       (ControlFlags)((newOne.ControlFlags | daclFlag) & DACL_CONTROL_FLAGS));
            }
        }
        private void UpdateWithNewSecurityDescriptor(RawSecurityDescriptor newOne, AccessControlSections includeSections)
        {
            Debug.Assert(newOne != null, "Must not supply a null parameter here");

            if ((includeSections & AccessControlSections.Owner) != 0)
            {
                _ownerModified            = true;
                _securityDescriptor.Owner = newOne !.Owner;
            }

            if ((includeSections & AccessControlSections.Group) != 0)
            {
                _groupModified            = true;
                _securityDescriptor.Group = newOne !.Group;
            }

            if ((includeSections & AccessControlSections.Audit) != 0)
            {
                _saclModified = true;
                if (newOne !.SystemAcl != null)
                {
                    _securityDescriptor.SystemAcl = new SystemAcl(IsContainer, IsDS, newOne.SystemAcl, true);
                }
                else
                {
                    _securityDescriptor.SystemAcl = null;
                }
                // carry forward the SACL related control flags
                _securityDescriptor.UpdateControlFlags(SACL_CONTROL_FLAGS, (ControlFlags)(newOne.ControlFlags & SACL_CONTROL_FLAGS));
            }