Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WindowsListViewScroll.cs
- TableCell.cs
- NetWebProxyFinder.cs
- HandlerWithFactory.cs
- EncoderParameters.cs
- ViewStateModeByIdAttribute.cs
- EntityRecordInfo.cs
- DSASignatureFormatter.cs
- Attributes.cs
- LayoutDump.cs
- WindowsFormsHost.cs
- PropertyEmitterBase.cs
- DataGridViewElement.cs
- DrawingAttributesDefaultValueFactory.cs
- ListViewEditEventArgs.cs
- WebPartUserCapability.cs
- InvalidWMPVersionException.cs
- EventHandlers.cs
- InvokeDelegate.cs
- BamlTreeNode.cs
- TextServicesCompartment.cs
- ToolBar.cs
- XmlNodeReader.cs
- RecommendedAsConfigurableAttribute.cs
- RandomNumberGenerator.cs
- WindowHideOrCloseTracker.cs
- OnOperation.cs
- ExpressionBuilder.cs
- SynchronizedDispatch.cs
- PropertyIdentifier.cs
- ValidationSummary.cs
- MaskedTextProvider.cs
- FormsAuthenticationConfiguration.cs
- TokenBasedSetEnumerator.cs
- ListViewGroupConverter.cs
- TextBoxAutomationPeer.cs
- DataGridItem.cs
- SystemIcmpV6Statistics.cs
- StorageAssociationTypeMapping.cs
- NullReferenceException.cs
- Configuration.cs
- Funcletizer.cs
- HighContrastHelper.cs
- EncoderBestFitFallback.cs
- StreamInfo.cs
- ContextStaticAttribute.cs
- WSTrust.cs
- XmlILAnnotation.cs
- UnsafeNativeMethods.cs
- IconBitmapDecoder.cs
- TimeoutValidationAttribute.cs
- NamedPermissionSet.cs
- CollectionsUtil.cs
- Int16AnimationUsingKeyFrames.cs
- ComponentEditorForm.cs
- ReceiveContext.cs
- ControlDesigner.cs
- XmlStringTable.cs
- SQLDecimalStorage.cs
- SelectorItemAutomationPeer.cs
- RegexParser.cs
- HScrollBar.cs
- Column.cs
- EventlogProvider.cs
- ThumbAutomationPeer.cs
- AuthenticationConfig.cs
- PlatformNotSupportedException.cs
- OrderToken.cs
- EventBuilder.cs
- EnterpriseServicesHelper.cs
- WebBrowserPermission.cs
- OracleTransaction.cs
- XmlMapping.cs
- TemplateControl.cs
- DataGridViewRowEventArgs.cs
- WebPartEventArgs.cs
- UserInitiatedNavigationPermission.cs
- JsonReader.cs
- IOException.cs
- XmlSchemaComplexContentRestriction.cs
- CheckBoxFlatAdapter.cs
- Storyboard.cs
- BlockCollection.cs
- AssociationTypeEmitter.cs
- _NTAuthentication.cs
- Int64.cs
- GridViewColumnCollection.cs
- LockingPersistenceProvider.cs
- _TimerThread.cs
- CollectionContainer.cs
- CodeTypeConstructor.cs
- ClientScriptManager.cs
- Propagator.JoinPropagator.cs
- QilCloneVisitor.cs
- StorageComplexPropertyMapping.cs
- CodeExporter.cs
- CacheMemory.cs
- Site.cs
- SchemaLookupTable.cs
- DataServiceException.cs