Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Security / AccessControl / ObjectSecurityT.cs / 1305376 / ObjectSecurityT.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: ObjectSecurity ** ** Purpose: Generic Managed ACL wrapper ** ** Date: February 7, 2007 ** ===========================================================*/ using System; using System.Runtime.InteropServices; using System.Security.AccessControl; using System.Security.Permissions; using System.Security.Principal; using Microsoft.Win32.SafeHandles; namespace System.Security.AccessControl { public class AccessRule: AccessRule where T : struct { #region Constructors // // Constructors for creating access rules for file objects // public AccessRule( IdentityReference identity, T rights, AccessControlType type) : this( identity, (int)(object)rights, false, InheritanceFlags.None, PropagationFlags.None, type) { } public AccessRule( String identity, T rights, AccessControlType type) : this( new NTAccount(identity), (int)(object)rights, false, InheritanceFlags.None, PropagationFlags.None, type) { } // // Constructor for creating access rules for folder objects // public AccessRule( IdentityReference identity, T rights, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AccessControlType type) : this( identity, (int)(object)rights, false, inheritanceFlags, propagationFlags, type) { } public AccessRule( String identity, T rights, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AccessControlType type) : this( new NTAccount(identity), (int)(object)rights, false, inheritanceFlags, propagationFlags, type) { } // // Internal constructor to be called by public constructors // and the access rule factory methods of ObjectSecurity // internal AccessRule( IdentityReference identity, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AccessControlType type) : base( identity, accessMask, isInherited, inheritanceFlags, propagationFlags, type) { } #endregion #region Public properties public T Rights { get { return (T)(object)base.AccessMask; } } #endregion } public class AuditRule : AuditRule where T : struct { #region Constructors public AuditRule( IdentityReference identity, T rights, AuditFlags flags) : this( identity, rights, InheritanceFlags.None, PropagationFlags.None, flags) { } public AuditRule( IdentityReference identity, T rights, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AuditFlags flags) : this( identity, (int)(object)rights, false, inheritanceFlags, propagationFlags, flags) { } public AuditRule( String identity, T rights, AuditFlags flags) : this( new NTAccount(identity), rights, InheritanceFlags.None, PropagationFlags.None, flags) { } public AuditRule( String identity, T rights, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AuditFlags flags) : this( new NTAccount(identity), (int)(object)rights, false, inheritanceFlags, propagationFlags, flags) { } internal AuditRule( IdentityReference identity, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AuditFlags flags) : base( identity, accessMask, isInherited, inheritanceFlags, propagationFlags, flags) { } #endregion #region Public properties public T Rights { get { return (T)(object)base.AccessMask; } } #endregion } public abstract class ObjectSecurity : NativeObjectSecurity where T : struct { #region Constructors [System.Security.SecuritySafeCritical] // auto-generated protected ObjectSecurity(bool isContainer, ResourceType resourceType) : base(isContainer, resourceType, null, null) { } [System.Security.SecuritySafeCritical] // auto-generated protected ObjectSecurity(bool isContainer, ResourceType resourceType, string name, AccessControlSections includeSections) : base(isContainer, resourceType, name, includeSections, null, null) { } [System.Security.SecuritySafeCritical] // auto-generated protected ObjectSecurity(bool isContainer, ResourceType resourceType, string name, AccessControlSections includeSections, ExceptionFromErrorCode exceptionFromErrorCode, object exceptionContext) : base(isContainer, resourceType, name, includeSections, exceptionFromErrorCode, exceptionContext) { } [System.Security.SecuritySafeCritical] // auto-generated protected ObjectSecurity(bool isContainer, ResourceType resourceType, SafeHandle safeHandle, AccessControlSections includeSections) : base(isContainer, resourceType, safeHandle, includeSections, null, null) { } [System.Security.SecuritySafeCritical] // auto-generated protected ObjectSecurity(bool isContainer, ResourceType resourceType, SafeHandle safeHandle, AccessControlSections includeSections, ExceptionFromErrorCode exceptionFromErrorCode, object exceptionContext) : base(isContainer, resourceType, safeHandle, includeSections, exceptionFromErrorCode, exceptionContext) { } #endregion #region Factories public override AccessRule AccessRuleFactory( IdentityReference identityReference, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AccessControlType type) { return new AccessRule ( identityReference, accessMask, isInherited, inheritanceFlags, propagationFlags, type); } public override AuditRule AuditRuleFactory( IdentityReference identityReference, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AuditFlags flags) { return new AuditRule ( identityReference, accessMask, isInherited, inheritanceFlags, propagationFlags, flags); } #endregion #region Private Methods private AccessControlSections GetAccessControlSectionsFromChanges() { AccessControlSections persistRules = AccessControlSections.None; if (AccessRulesModified) { persistRules = AccessControlSections.Access; } if (AuditRulesModified) { persistRules |= AccessControlSections.Audit; } if (OwnerModified) { persistRules |= AccessControlSections.Owner; } if (GroupModified) { persistRules |= AccessControlSections.Group; } return persistRules; } #endregion #region Protected Methods // Use this in your own Persist after you have demanded any appropriate CAS permissions. // Note that you will want your version to be internal and use a specialized Safe Handle. // // [System.Security.SecuritySafeCritical] // auto-generated [SecurityPermission(SecurityAction.Assert, UnmanagedCode = true)] protected internal void Persist(SafeHandle handle) { WriteLock(); try { AccessControlSections persistRules = GetAccessControlSectionsFromChanges(); base.Persist(handle, persistRules); OwnerModified = GroupModified = AuditRulesModified = AccessRulesModified = false; } finally { WriteUnlock(); } } // Use this in your own Persist after you have demanded any appropriate CAS permissions. // Note that you will want your version to be internal. [System.Security.SecuritySafeCritical] // auto-generated [SecurityPermission(SecurityAction.Assert, UnmanagedCode = true)] protected internal void Persist(String name) { WriteLock(); try { AccessControlSections persistRules = GetAccessControlSectionsFromChanges(); base.Persist(name, persistRules); OwnerModified = GroupModified = AuditRulesModified = AccessRulesModified = false; } finally { WriteUnlock(); } } #endregion #region Public Methods // Override these if you need to do some custom bit remapping to hide any // complexity from the user. public virtual void AddAccessRule(AccessRule// rule) { base.AddAccessRule(rule); } public virtual void SetAccessRule(AccessRule rule) { base.SetAccessRule(rule); } public virtual void ResetAccessRule(AccessRule rule) { base.ResetAccessRule(rule); } public virtual bool RemoveAccessRule(AccessRule rule) { return base.RemoveAccessRule(rule); } public virtual void RemoveAccessRuleAll(AccessRule rule) { base.RemoveAccessRuleAll(rule); } public virtual void RemoveAccessRuleSpecific(AccessRule rule) { base.RemoveAccessRuleSpecific(rule); } public virtual void AddAuditRule(AuditRule rule) { base.AddAuditRule(rule); } public virtual void SetAuditRule(AuditRule rule) { base.SetAuditRule(rule); } public virtual bool RemoveAuditRule(AuditRule rule) { return base.RemoveAuditRule(rule); } public virtual void RemoveAuditRuleAll(AuditRule rule) { base.RemoveAuditRuleAll(rule); } public virtual void RemoveAuditRuleSpecific(AuditRule rule) { base.RemoveAuditRuleSpecific(rule); } #endregion #region some overrides public override Type AccessRightType { get { return typeof(T); } } public override Type AccessRuleType { get { return typeof(AccessRule ); } } public override Type AuditRuleType { get { return typeof(AuditRule ); } } #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: ObjectSecurity ** ** Purpose: Generic Managed ACL wrapper ** ** Date: February 7, 2007 ** ===========================================================*/ using System; using System.Runtime.InteropServices; using System.Security.AccessControl; using System.Security.Permissions; using System.Security.Principal; using Microsoft.Win32.SafeHandles; namespace System.Security.AccessControl { public class AccessRule : AccessRule where T : struct { #region Constructors // // Constructors for creating access rules for file objects // public AccessRule( IdentityReference identity, T rights, AccessControlType type) : this( identity, (int)(object)rights, false, InheritanceFlags.None, PropagationFlags.None, type) { } public AccessRule( String identity, T rights, AccessControlType type) : this( new NTAccount(identity), (int)(object)rights, false, InheritanceFlags.None, PropagationFlags.None, type) { } // // Constructor for creating access rules for folder objects // public AccessRule( IdentityReference identity, T rights, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AccessControlType type) : this( identity, (int)(object)rights, false, inheritanceFlags, propagationFlags, type) { } public AccessRule( String identity, T rights, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AccessControlType type) : this( new NTAccount(identity), (int)(object)rights, false, inheritanceFlags, propagationFlags, type) { } // // Internal constructor to be called by public constructors // and the access rule factory methods of ObjectSecurity // internal AccessRule( IdentityReference identity, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AccessControlType type) : base( identity, accessMask, isInherited, inheritanceFlags, propagationFlags, type) { } #endregion #region Public properties public T Rights { get { return (T)(object)base.AccessMask; } } #endregion } public class AuditRule : AuditRule where T : struct { #region Constructors public AuditRule( IdentityReference identity, T rights, AuditFlags flags) : this( identity, rights, InheritanceFlags.None, PropagationFlags.None, flags) { } public AuditRule( IdentityReference identity, T rights, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AuditFlags flags) : this( identity, (int)(object)rights, false, inheritanceFlags, propagationFlags, flags) { } public AuditRule( String identity, T rights, AuditFlags flags) : this( new NTAccount(identity), rights, InheritanceFlags.None, PropagationFlags.None, flags) { } public AuditRule( String identity, T rights, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AuditFlags flags) : this( new NTAccount(identity), (int)(object)rights, false, inheritanceFlags, propagationFlags, flags) { } internal AuditRule( IdentityReference identity, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AuditFlags flags) : base( identity, accessMask, isInherited, inheritanceFlags, propagationFlags, flags) { } #endregion #region Public properties public T Rights { get { return (T)(object)base.AccessMask; } } #endregion } public abstract class ObjectSecurity : NativeObjectSecurity where T : struct { #region Constructors [System.Security.SecuritySafeCritical] // auto-generated protected ObjectSecurity(bool isContainer, ResourceType resourceType) : base(isContainer, resourceType, null, null) { } [System.Security.SecuritySafeCritical] // auto-generated protected ObjectSecurity(bool isContainer, ResourceType resourceType, string name, AccessControlSections includeSections) : base(isContainer, resourceType, name, includeSections, null, null) { } [System.Security.SecuritySafeCritical] // auto-generated protected ObjectSecurity(bool isContainer, ResourceType resourceType, string name, AccessControlSections includeSections, ExceptionFromErrorCode exceptionFromErrorCode, object exceptionContext) : base(isContainer, resourceType, name, includeSections, exceptionFromErrorCode, exceptionContext) { } [System.Security.SecuritySafeCritical] // auto-generated protected ObjectSecurity(bool isContainer, ResourceType resourceType, SafeHandle safeHandle, AccessControlSections includeSections) : base(isContainer, resourceType, safeHandle, includeSections, null, null) { } [System.Security.SecuritySafeCritical] // auto-generated protected ObjectSecurity(bool isContainer, ResourceType resourceType, SafeHandle safeHandle, AccessControlSections includeSections, ExceptionFromErrorCode exceptionFromErrorCode, object exceptionContext) : base(isContainer, resourceType, safeHandle, includeSections, exceptionFromErrorCode, exceptionContext) { } #endregion #region Factories public override AccessRule AccessRuleFactory( IdentityReference identityReference, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AccessControlType type) { return new AccessRule ( identityReference, accessMask, isInherited, inheritanceFlags, propagationFlags, type); } public override AuditRule AuditRuleFactory( IdentityReference identityReference, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AuditFlags flags) { return new AuditRule ( identityReference, accessMask, isInherited, inheritanceFlags, propagationFlags, flags); } #endregion #region Private Methods private AccessControlSections GetAccessControlSectionsFromChanges() { AccessControlSections persistRules = AccessControlSections.None; if (AccessRulesModified) { persistRules = AccessControlSections.Access; } if (AuditRulesModified) { persistRules |= AccessControlSections.Audit; } if (OwnerModified) { persistRules |= AccessControlSections.Owner; } if (GroupModified) { persistRules |= AccessControlSections.Group; } return persistRules; } #endregion #region Protected Methods // Use this in your own Persist after you have demanded any appropriate CAS permissions. // Note that you will want your version to be internal and use a specialized Safe Handle. // // [System.Security.SecuritySafeCritical] // auto-generated [SecurityPermission(SecurityAction.Assert, UnmanagedCode = true)] protected internal void Persist(SafeHandle handle) { WriteLock(); try { AccessControlSections persistRules = GetAccessControlSectionsFromChanges(); base.Persist(handle, persistRules); OwnerModified = GroupModified = AuditRulesModified = AccessRulesModified = false; } finally { WriteUnlock(); } } // Use this in your own Persist after you have demanded any appropriate CAS permissions. // Note that you will want your version to be internal. [System.Security.SecuritySafeCritical] // auto-generated [SecurityPermission(SecurityAction.Assert, UnmanagedCode = true)] protected internal void Persist(String name) { WriteLock(); try { AccessControlSections persistRules = GetAccessControlSectionsFromChanges(); base.Persist(name, persistRules); OwnerModified = GroupModified = AuditRulesModified = AccessRulesModified = false; } finally { WriteUnlock(); } } #endregion #region Public Methods // Override these if you need to do some custom bit remapping to hide any // complexity from the user. public virtual void AddAccessRule(AccessRule// rule) { base.AddAccessRule(rule); } public virtual void SetAccessRule(AccessRule rule) { base.SetAccessRule(rule); } public virtual void ResetAccessRule(AccessRule rule) { base.ResetAccessRule(rule); } public virtual bool RemoveAccessRule(AccessRule rule) { return base.RemoveAccessRule(rule); } public virtual void RemoveAccessRuleAll(AccessRule rule) { base.RemoveAccessRuleAll(rule); } public virtual void RemoveAccessRuleSpecific(AccessRule rule) { base.RemoveAccessRuleSpecific(rule); } public virtual void AddAuditRule(AuditRule rule) { base.AddAuditRule(rule); } public virtual void SetAuditRule(AuditRule rule) { base.SetAuditRule(rule); } public virtual bool RemoveAuditRule(AuditRule rule) { return base.RemoveAuditRule(rule); } public virtual void RemoveAuditRuleAll(AuditRule rule) { base.RemoveAuditRuleAll(rule); } public virtual void RemoveAuditRuleSpecific(AuditRule rule) { base.RemoveAuditRuleSpecific(rule); } #endregion #region some overrides public override Type AccessRightType { get { return typeof(T); } } public override Type AccessRuleType { get { return typeof(AccessRule ); } } public override Type AuditRuleType { get { return typeof(AuditRule ); } } #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SafeLocalMemHandle.cs
- ExpressionParser.cs
- DetailsViewDeletedEventArgs.cs
- ColumnCollection.cs
- RsaSecurityTokenAuthenticator.cs
- EpmContentSerializer.cs
- ParallelTimeline.cs
- MouseButton.cs
- ToolStripLocationCancelEventArgs.cs
- SecurityDocument.cs
- Empty.cs
- ProgressBar.cs
- TakeQueryOptionExpression.cs
- SoapProtocolImporter.cs
- DataGridViewCellPaintingEventArgs.cs
- ActiveDocumentEvent.cs
- GeneratedContractType.cs
- OdbcPermission.cs
- AppDomainManager.cs
- FontUnitConverter.cs
- AsnEncodedData.cs
- InputBinder.cs
- AccessDataSourceView.cs
- SafeArrayRankMismatchException.cs
- SecurityManager.cs
- ContainsRowNumberChecker.cs
- SQLDecimal.cs
- SerializerWriterEventHandlers.cs
- TextViewSelectionProcessor.cs
- PassportIdentity.cs
- Operand.cs
- PlatformCulture.cs
- EditingCoordinator.cs
- SoundPlayerAction.cs
- MenuRenderer.cs
- OdbcError.cs
- Console.cs
- TypeReference.cs
- Compilation.cs
- _SingleItemRequestCache.cs
- InstanceDataCollection.cs
- ADRoleFactory.cs
- HexParser.cs
- CommandValueSerializer.cs
- QueryServiceConfigHandle.cs
- PropertyGridEditorPart.cs
- DefaultBindingPropertyAttribute.cs
- mediapermission.cs
- FixedPosition.cs
- InputScopeNameConverter.cs
- SqlServer2KCompatibilityCheck.cs
- DispatcherObject.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- EventNotify.cs
- XPathDocumentIterator.cs
- XamlClipboardData.cs
- _AutoWebProxyScriptWrapper.cs
- ConfigurationValues.cs
- NamespaceList.cs
- IndexedString.cs
- Context.cs
- VirtualPathProvider.cs
- RotateTransform3D.cs
- ISAPIWorkerRequest.cs
- TextFormatterContext.cs
- ClassicBorderDecorator.cs
- MemberPathMap.cs
- util.cs
- ModuleElement.cs
- XamlFxTrace.cs
- SafeNativeMethodsOther.cs
- TextFragmentEngine.cs
- ColumnHeader.cs
- _PooledStream.cs
- ScrollViewerAutomationPeer.cs
- AssemblyInfo.cs
- UnaryNode.cs
- PkcsUtils.cs
- TrustManager.cs
- ImageFormatConverter.cs
- XNodeNavigator.cs
- SqlRewriteScalarSubqueries.cs
- IMembershipProvider.cs
- MultiSelector.cs
- ReservationNotFoundException.cs
- DbProviderFactory.cs
- ExceptionCollection.cs
- BulletedListDesigner.cs
- TableRowsCollectionEditor.cs
- GridViewRowPresenter.cs
- BindingMAnagerBase.cs
- XsdBuilder.cs
- DoubleCollectionValueSerializer.cs
- BezierSegment.cs
- XmlSchemaInclude.cs
- EntityDataSourceSelectedEventArgs.cs
- CaseInsensitiveHashCodeProvider.cs
- PropertyEmitterBase.cs
- RoleService.cs
- CssClassPropertyAttribute.cs