Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / CommonUI / System / Drawing / IntSecurity.cs / 1 / IntSecurity.cs
namespace System.Drawing { using System; using System.IO; using System.Security; using System.Security.Permissions; using System.Drawing.Printing; internal static class IntSecurity { private static readonly UIPermission AllWindows = new UIPermission(UIPermissionWindow.AllWindows); private static readonly UIPermission SafeSubWindows = new UIPermission(UIPermissionWindow.SafeSubWindows); public static readonly CodeAccessPermission UnmanagedCode = new SecurityPermission(SecurityPermissionFlag.UnmanagedCode); public static readonly CodeAccessPermission ObjectFromWin32Handle = UnmanagedCode; public static readonly CodeAccessPermission Win32HandleManipulation = UnmanagedCode; public static readonly PrintingPermission NoPrinting = new PrintingPermission(PrintingPermissionLevel.NoPrinting); public static readonly PrintingPermission SafePrinting = new PrintingPermission(PrintingPermissionLevel.SafePrinting); public static readonly PrintingPermission DefaultPrinting = new PrintingPermission(PrintingPermissionLevel.DefaultPrinting); public static readonly PrintingPermission AllPrinting = new PrintingPermission(PrintingPermissionLevel.AllPrinting); internal static void DemandReadFileIO(string fileName) { string full = fileName; full = UnsafeGetFullPath(fileName); new FileIOPermission(FileIOPermissionAccess.Read, full).Demand(); } internal static void DemandWriteFileIO(string fileName) { string full = fileName; full = UnsafeGetFullPath(fileName); new FileIOPermission(FileIOPermissionAccess.Write, full).Demand(); } internal static string UnsafeGetFullPath(string fileName) { string full = fileName; FileIOPermission fiop = new FileIOPermission(PermissionState.None); fiop.AllFiles = FileIOPermissionAccess.PathDiscovery; fiop.Assert(); try { full = Path.GetFullPath(fileName); } finally { CodeAccessPermission.RevertAssert(); } return full; } static PermissionSet allPrintingAndUnmanagedCode; public static PermissionSet AllPrintingAndUnmanagedCode { get { if (allPrintingAndUnmanagedCode == null) { PermissionSet temp = new PermissionSet(PermissionState.None); temp.SetPermission(IntSecurity.UnmanagedCode); temp.SetPermission(IntSecurity.AllPrinting); allPrintingAndUnmanagedCode = temp; } return allPrintingAndUnmanagedCode; } } internal static bool HasPermission(PrintingPermission permission) { try { permission.Demand(); return true; } catch (SecurityException) { return false; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. namespace System.Drawing { using System; using System.IO; using System.Security; using System.Security.Permissions; using System.Drawing.Printing; internal static class IntSecurity { private static readonly UIPermission AllWindows = new UIPermission(UIPermissionWindow.AllWindows); private static readonly UIPermission SafeSubWindows = new UIPermission(UIPermissionWindow.SafeSubWindows); public static readonly CodeAccessPermission UnmanagedCode = new SecurityPermission(SecurityPermissionFlag.UnmanagedCode); public static readonly CodeAccessPermission ObjectFromWin32Handle = UnmanagedCode; public static readonly CodeAccessPermission Win32HandleManipulation = UnmanagedCode; public static readonly PrintingPermission NoPrinting = new PrintingPermission(PrintingPermissionLevel.NoPrinting); public static readonly PrintingPermission SafePrinting = new PrintingPermission(PrintingPermissionLevel.SafePrinting); public static readonly PrintingPermission DefaultPrinting = new PrintingPermission(PrintingPermissionLevel.DefaultPrinting); public static readonly PrintingPermission AllPrinting = new PrintingPermission(PrintingPermissionLevel.AllPrinting); internal static void DemandReadFileIO(string fileName) { string full = fileName; full = UnsafeGetFullPath(fileName); new FileIOPermission(FileIOPermissionAccess.Read, full).Demand(); } internal static void DemandWriteFileIO(string fileName) { string full = fileName; full = UnsafeGetFullPath(fileName); new FileIOPermission(FileIOPermissionAccess.Write, full).Demand(); } internal static string UnsafeGetFullPath(string fileName) { string full = fileName; FileIOPermission fiop = new FileIOPermission(PermissionState.None); fiop.AllFiles = FileIOPermissionAccess.PathDiscovery; fiop.Assert(); try { full = Path.GetFullPath(fileName); } finally { CodeAccessPermission.RevertAssert(); } return full; } static PermissionSet allPrintingAndUnmanagedCode; public static PermissionSet AllPrintingAndUnmanagedCode { get { if (allPrintingAndUnmanagedCode == null) { PermissionSet temp = new PermissionSet(PermissionState.None); temp.SetPermission(IntSecurity.UnmanagedCode); temp.SetPermission(IntSecurity.AllPrinting); allPrintingAndUnmanagedCode = temp; } return allPrintingAndUnmanagedCode; } } internal static bool HasPermission(PrintingPermission permission) { try { permission.Demand(); return true; } catch (SecurityException) { return false; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TemplateBaseAction.cs
- ConfigurationSettings.cs
- DefaultMemberAttribute.cs
- ListenerUnsafeNativeMethods.cs
- _PooledStream.cs
- BulletedListEventArgs.cs
- SchemaElementDecl.cs
- _RequestLifetimeSetter.cs
- CommandBinding.cs
- ResourcePermissionBase.cs
- SafeSystemMetrics.cs
- InvalidDataContractException.cs
- MessageEventSubscriptionService.cs
- OleDbStruct.cs
- ChildTable.cs
- CancelAsyncOperationRequest.cs
- SqlDataAdapter.cs
- CodeAttributeArgumentCollection.cs
- XmlBinaryReader.cs
- DomNameTable.cs
- MimeTextImporter.cs
- MarkupProperty.cs
- OleDbError.cs
- __Error.cs
- SpecularMaterial.cs
- Part.cs
- FixedSOMTextRun.cs
- HttpPostedFile.cs
- RegexCompiler.cs
- CompressStream.cs
- Constraint.cs
- Drawing.cs
- CodeAccessPermission.cs
- PrimaryKeyTypeConverter.cs
- BasePropertyDescriptor.cs
- AttributeCollection.cs
- ExceptionTrace.cs
- ValidationErrorInfo.cs
- UrlPropertyAttribute.cs
- SplineKeyFrames.cs
- SoapAttributeAttribute.cs
- TdsParameterSetter.cs
- BatchParser.cs
- QilUnary.cs
- NamedPermissionSet.cs
- BooleanExpr.cs
- DataTemplateKey.cs
- MethodBuilderInstantiation.cs
- ProtocolsConfiguration.cs
- PageTextBox.cs
- BuildResult.cs
- QuaternionConverter.cs
- XmlAutoDetectWriter.cs
- SafeWaitHandle.cs
- HyperLinkField.cs
- RelationshipConverter.cs
- SafeProcessHandle.cs
- TextEmbeddedObject.cs
- RuntimeIdentifierPropertyAttribute.cs
- TableCell.cs
- OutputCacheProviderCollection.cs
- DuplexChannelFactory.cs
- PackageRelationshipCollection.cs
- DataSourceProvider.cs
- ReadOnlyDataSource.cs
- ProfileManager.cs
- SafeRightsManagementEnvironmentHandle.cs
- FunctionDefinition.cs
- GeneralTransform3DCollection.cs
- UserNamePasswordValidator.cs
- SiteMapPathDesigner.cs
- WebEventCodes.cs
- EntityDesignerBuildProvider.cs
- CultureSpecificStringDictionary.cs
- CursorConverter.cs
- WSSecurityOneDotOneSendSecurityHeader.cs
- ArrayWithOffset.cs
- SqlUtils.cs
- AppSecurityManager.cs
- NegationPusher.cs
- ADConnectionHelper.cs
- TrackingStringDictionary.cs
- DocumentStatusResources.cs
- FunctionOverloadResolver.cs
- CommandConverter.cs
- DynamicRenderer.cs
- ArraySubsetEnumerator.cs
- WebHttpBindingCollectionElement.cs
- QilFactory.cs
- TdsValueSetter.cs
- UnauthorizedAccessException.cs
- GlobalAllocSafeHandle.cs
- KeyValuePair.cs
- ImageInfo.cs
- BitmapVisualManager.cs
- MobileUserControl.cs
- TrackingServices.cs
- BreakRecordTable.cs
- ConfigsHelper.cs
- ASCIIEncoding.cs