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
- ISFTagAndGuidCache.cs
- SystemTcpStatistics.cs
- GeneralTransform3DCollection.cs
- RoleServiceManager.cs
- XmlRootAttribute.cs
- PrintEvent.cs
- ServiceRouteHandler.cs
- SqlNotificationRequest.cs
- ValueExpressions.cs
- CreateUserWizardStep.cs
- Tokenizer.cs
- ClientCultureInfo.cs
- DefaultHttpHandler.cs
- ConfigXmlSignificantWhitespace.cs
- GenericXmlSecurityTokenAuthenticator.cs
- FtpCachePolicyElement.cs
- CopyOnWriteList.cs
- AmbiguousMatchException.cs
- PostBackTrigger.cs
- StringKeyFrameCollection.cs
- ObsoleteAttribute.cs
- RsaSecurityTokenParameters.cs
- StrokeNodeEnumerator.cs
- PreviewPrintController.cs
- SQLDouble.cs
- BindingValueChangedEventArgs.cs
- XmlHelper.cs
- HostExecutionContextManager.cs
- SingleAnimationUsingKeyFrames.cs
- SQLDoubleStorage.cs
- ProviderUtil.cs
- RequestCache.cs
- DuplicateWaitObjectException.cs
- CompilationSection.cs
- ContentPosition.cs
- SqlCacheDependencyDatabaseCollection.cs
- HashCryptoHandle.cs
- ByeMessageApril2005.cs
- ActiveXHelper.cs
- DesignerVerb.cs
- ProxyHelper.cs
- ELinqQueryState.cs
- SortDescriptionCollection.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- InfoCardRSACryptoProvider.cs
- DataServiceException.cs
- ButtonBaseAutomationPeer.cs
- WindowsGraphicsCacheManager.cs
- DefinitionBase.cs
- BaseInfoTable.cs
- UserControlCodeDomTreeGenerator.cs
- Image.cs
- TextBreakpoint.cs
- PreDigestedSignedInfo.cs
- PageOutputColor.cs
- AsymmetricKeyExchangeFormatter.cs
- Pair.cs
- SafeFindHandle.cs
- TextStore.cs
- PageBreakRecord.cs
- Duration.cs
- SchemaNotation.cs
- ControlCodeDomSerializer.cs
- DayRenderEvent.cs
- XmlSchemaCollection.cs
- ConditionalAttribute.cs
- PhonemeEventArgs.cs
- LambdaCompiler.Unary.cs
- PriorityQueue.cs
- ScrollContentPresenter.cs
- TypefaceCollection.cs
- HostProtectionPermission.cs
- TransformerInfoCollection.cs
- SafeThreadHandle.cs
- PipelineDeploymentState.cs
- HtmlInputRadioButton.cs
- Control.cs
- Timer.cs
- Int64Storage.cs
- SendSecurityHeader.cs
- Empty.cs
- DefaultDialogButtons.cs
- BitmapCodecInfoInternal.cs
- UTF8Encoding.cs
- PeerInputChannel.cs
- SoapAttributeAttribute.cs
- WorkflowApplicationException.cs
- Latin1Encoding.cs
- DecoderReplacementFallback.cs
- DBSqlParserTableCollection.cs
- HuffModule.cs
- Common.cs
- Matrix.cs
- InvalidEnumArgumentException.cs
- SubtreeProcessor.cs
- StandardCommands.cs
- FilterableAttribute.cs
- SQLByteStorage.cs
- Visual3DCollection.cs