private void CreateFromParts(System.Security.AccessControl.ControlFlags flags, SecurityIdentifier owner, SecurityIdentifier group, RawAcl systemAcl, RawAcl discretionaryAcl) { this.SetFlags(flags); this.Owner = owner; this.Group = group; this.SystemAcl = systemAcl; this.DiscretionaryAcl = discretionaryAcl; this.ResourceManagerControl = 0; }
private void CreateFromParts(bool isContainer, bool isDS, System.Security.AccessControl.ControlFlags flags, SecurityIdentifier owner, SecurityIdentifier group, System.Security.AccessControl.SystemAcl systemAcl, System.Security.AccessControl.DiscretionaryAcl discretionaryAcl) { if ((systemAcl != null) && (systemAcl.IsContainer != isContainer)) { throw new ArgumentException(Environment.GetResourceString(isContainer ? "AccessControl_MustSpecifyContainerAcl" : "AccessControl_MustSpecifyLeafObjectAcl"), "systemAcl"); } if ((discretionaryAcl != null) && (discretionaryAcl.IsContainer != isContainer)) { throw new ArgumentException(Environment.GetResourceString(isContainer ? "AccessControl_MustSpecifyContainerAcl" : "AccessControl_MustSpecifyLeafObjectAcl"), "discretionaryAcl"); } this._isContainer = isContainer; if ((systemAcl != null) && (systemAcl.IsDS != isDS)) { throw new ArgumentException(Environment.GetResourceString(isDS ? "AccessControl_MustSpecifyDirectoryObjectAcl" : "AccessControl_MustSpecifyNonDirectoryObjectAcl"), "systemAcl"); } if ((discretionaryAcl != null) && (discretionaryAcl.IsDS != isDS)) { throw new ArgumentException(Environment.GetResourceString(isDS ? "AccessControl_MustSpecifyDirectoryObjectAcl" : "AccessControl_MustSpecifyNonDirectoryObjectAcl"), "discretionaryAcl"); } this._isDS = isDS; this._sacl = systemAcl; if (discretionaryAcl == null) { discretionaryAcl = System.Security.AccessControl.DiscretionaryAcl.CreateAllowEveryoneFullAccess(this._isDS, this._isContainer); } this._dacl = discretionaryAcl; System.Security.AccessControl.ControlFlags flags2 = flags | System.Security.AccessControl.ControlFlags.DiscretionaryAclPresent; if (systemAcl == null) { flags2 &= ~System.Security.AccessControl.ControlFlags.SystemAclPresent; } else { flags2 |= System.Security.AccessControl.ControlFlags.SystemAclPresent; } this._rawSd = new RawSecurityDescriptor(flags2, owner, group, (systemAcl == null) ? null : systemAcl.RawAcl, discretionaryAcl.RawAcl); }
public RawSecurityDescriptor(System.Security.AccessControl.ControlFlags flags, SecurityIdentifier owner, SecurityIdentifier group, RawAcl systemAcl, RawAcl discretionaryAcl) { this.CreateFromParts(flags, owner, group, systemAcl, discretionaryAcl); }
public RawSecurityDescriptor(byte[] binaryForm, int offset) { SecurityIdentifier identifier; SecurityIdentifier identifier2; RawAcl acl; RawAcl acl2; if (binaryForm == null) { throw new ArgumentNullException("binaryForm"); } if (offset < 0) { throw new ArgumentOutOfRangeException("offset", Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegNum")); } if ((binaryForm.Length - offset) < 20) { throw new ArgumentOutOfRangeException("binaryForm", Environment.GetResourceString("ArgumentOutOfRange_ArrayTooSmall")); } if (binaryForm[offset] != GenericSecurityDescriptor.Revision) { throw new ArgumentOutOfRangeException("binaryForm", Environment.GetResourceString("AccessControl_InvalidSecurityDescriptorRevision")); } byte num = binaryForm[offset + 1]; System.Security.AccessControl.ControlFlags flags = (System.Security.AccessControl.ControlFlags)(binaryForm[offset + 2] + (binaryForm[offset + 3] << 8)); if ((flags & System.Security.AccessControl.ControlFlags.SelfRelative) == System.Security.AccessControl.ControlFlags.None) { throw new ArgumentException(Environment.GetResourceString("AccessControl_InvalidSecurityDescriptorSelfRelativeForm"), "binaryForm"); } int num2 = GenericSecurityDescriptor.UnmarshalInt(binaryForm, offset + 4); if (num2 != 0) { identifier = new SecurityIdentifier(binaryForm, offset + num2); } else { identifier = null; } int num3 = GenericSecurityDescriptor.UnmarshalInt(binaryForm, offset + 8); if (num3 != 0) { identifier2 = new SecurityIdentifier(binaryForm, offset + num3); } else { identifier2 = null; } int num4 = GenericSecurityDescriptor.UnmarshalInt(binaryForm, offset + 12); if (((flags & System.Security.AccessControl.ControlFlags.SystemAclPresent) != System.Security.AccessControl.ControlFlags.None) && (num4 != 0)) { acl = new RawAcl(binaryForm, offset + num4); } else { acl = null; } int num5 = GenericSecurityDescriptor.UnmarshalInt(binaryForm, offset + 0x10); if (((flags & System.Security.AccessControl.ControlFlags.DiscretionaryAclPresent) != System.Security.AccessControl.ControlFlags.None) && (num5 != 0)) { acl2 = new RawAcl(binaryForm, offset + num5); } else { acl2 = null; } this.CreateFromParts(flags, identifier, identifier2, acl, acl2); if ((flags & System.Security.AccessControl.ControlFlags.RMControlValid) != System.Security.AccessControl.ControlFlags.None) { this.ResourceManagerControl = num; } }
public void SetFlags(System.Security.AccessControl.ControlFlags flags) { this._flags = flags | System.Security.AccessControl.ControlFlags.SelfRelative; }
internal void AddControlFlags(System.Security.AccessControl.ControlFlags flags) { this._rawSd.SetFlags(this._rawSd.ControlFlags | flags); }
public CommonSecurityDescriptor(bool isContainer, bool isDS, System.Security.AccessControl.ControlFlags flags, SecurityIdentifier owner, SecurityIdentifier group, System.Security.AccessControl.SystemAcl systemAcl, System.Security.AccessControl.DiscretionaryAcl discretionaryAcl) { this.CreateFromParts(isContainer, isDS, flags, owner, group, systemAcl, discretionaryAcl); }
private CommonSecurityDescriptor(bool isContainer, bool isDS, System.Security.AccessControl.ControlFlags flags, SecurityIdentifier owner, SecurityIdentifier group, RawAcl systemAcl, RawAcl discretionaryAcl) : this(isContainer, isDS, flags, owner, group, (systemAcl == null) ? null : new System.Security.AccessControl.SystemAcl(isContainer, isDS, systemAcl), (discretionaryAcl == null) ? null : new System.Security.AccessControl.DiscretionaryAcl(isContainer, isDS, discretionaryAcl)) { }
internal void UpdateControlFlags(System.Security.AccessControl.ControlFlags flagsToUpdate, System.Security.AccessControl.ControlFlags newFlags) { System.Security.AccessControl.ControlFlags flags = newFlags | (this._rawSd.ControlFlags & ~flagsToUpdate); this._rawSd.SetFlags(flags); }
internal void RemoveControlFlags(System.Security.AccessControl.ControlFlags flags) { this._rawSd.SetFlags(this._rawSd.ControlFlags & ~flags); }