This documentation is archived and is not being maintained.

SecurityPermission Class

Describes a set of security permissions applied to code. This class cannot be inherited.

Namespace:  System.Security.Permissions
Assembly:  mscorlib (in mscorlib.dll)

'Declaration
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public NotInheritable Class SecurityPermission _
	Inherits CodeAccessPermission _
	Implements IUnrestrictedPermission
'Usage
Dim instance As SecurityPermission

This permission uses the SecurityPermissionFlag enumeration. The values for this enumeration can be found in its documentation.

The following code example demonstrates the behavior of the SecurityPermission methods.

The example is intended to show how the methods perform if you execute the methods from your code. In general, the methods of permission classes are used by the security infrastructure; they are not typically used in applications.

For an example showing the use of the SecurityPermission class to demand permission for a specific SecurityPermissionFlag enumeration value, see the SecurityPermission(SecurityPermissionFlag) constructor.

Imports System
Imports System.Security
Imports System.Security.Permissions
Imports Microsoft.VisualBasic

<Assembly: CLSCompliant(True)> 

Public Class SecurityPermissionDemo

    ' IsSubsetOf determines whether the current permission is a subset of the specified permission. 
    Private Function IsSubsetOfDemo() As Boolean 
        Dim returnValue As Boolean = True 
        Dim Security1, Security2 As SecurityPermissionFlag
        Dim SecurityPerm1, SecurityPerm2 As SecurityPermission
        Dim SecurityGen1 As New SecurityGenerator()
        Dim SecurityGen2 As New SecurityGenerator()
        SecurityGen1.ResetIndex()
        While SecurityGen1.GetSecurityFlag(Security1)
            SecurityPerm1 = New SecurityPermission(Security1)
            SecurityGen2.ResetIndex()
            Console.WriteLine("********************************************************" & ControlChars.Lf)

            While SecurityGen2.GetSecurityFlag(Security2)
                SecurityPerm2 = New SecurityPermission(Security2)
                Try 
                    If SecurityPerm1.IsSubsetOf(SecurityPerm2) Then
                        Console.WriteLine((SecurityPerm1.Flags.ToString().ToString() _
                        & " is a subset of " & SecurityPerm2.Flags.ToString()))
                    Else
                        Console.WriteLine((SecurityPerm1.Flags.ToString() & " is not a subset of " _
                        & SecurityPerm2.Flags.ToString()))
                    End If 
                Catch e As Exception
                    Console.WriteLine(("An exception was thrown for subset :" & SecurityPerm1.ToString() _
                    & ControlChars.Lf & SecurityPerm2.ToString() & ControlChars.Lf & e.ToString()))
                    returnValue = False 
                End Try 

            End While 

        End While 
        Return returnValue
    End Function 'IsSubsetOfDemo

    ' Union creates a new permission that is the union of the current permission and  
    ' the specified permission. 
    Private Function UnionDemo() As Boolean 
        Dim returnValue As Boolean = True 
        Dim Security1, Security2 As SecurityPermissionFlag
        Dim SecurityPerm1, SecurityPerm2 As SecurityPermission
        Dim SecurityPerm3 As IPermission
        Dim SecurityGen1 As New SecurityGenerator()
        Dim SecurityGen2 As New SecurityGenerator()
        SecurityGen1.ResetIndex()
        While SecurityGen1.GetSecurityFlag(Security1)
            SecurityPerm1 = New SecurityPermission(Security1)
            Console.WriteLine("**********************************************************" & ControlChars.Lf)
            SecurityGen2.ResetIndex()

            While SecurityGen2.GetSecurityFlag(Security2)
                SecurityPerm2 = New SecurityPermission(Security2)
                SecurityPerm3 = CType(SecurityPerm1.Union(SecurityPerm2), SecurityPermission)
                SecurityPerm3 = SecurityPerm1.Union(SecurityPerm2)

                If SecurityPerm3 Is Nothing Then
                    Console.WriteLine(("The union of " & Security1 & " and " & Security2 & " is null."))
                Else
                    Console.WriteLine(("The union of " & SecurityPerm1.Flags.ToString() _
                    & " and " & SecurityPerm2.Flags.ToString() & " = " & CType(SecurityPerm3, SecurityPermission).Flags.ToString().ToString()))
                End If 

            End While 

        End While 


        Return returnValue
    End Function 'UnionDemo

    ' Intersect creates and returns a new permission that is the intersection of the current  
    ' permission and the permission specified. 
    Private Function IntersectDemo() As Boolean 
        Dim returnValue As Boolean = True 
        Dim Security1, Security2 As SecurityPermissionFlag
        Dim SecurityPerm1, SecurityPerm2, SecurityPerm3 As SecurityPermission
        Dim SecurityGen1 As New SecurityGenerator()
        Dim SecurityGen2 As New SecurityGenerator()
        SecurityGen1.ResetIndex()
        While SecurityGen1.GetSecurityFlag(Security1)
            SecurityPerm1 = New SecurityPermission(Security1)
            Console.WriteLine("**********************************************************" & ControlChars.Lf)
            SecurityGen2.ResetIndex()

            While SecurityGen2.GetSecurityFlag(Security2)
                SecurityPerm2 = New SecurityPermission(Security2)
                SecurityPerm3 = CType(SecurityPerm1.Intersect(SecurityPerm2), SecurityPermission)
                If Not (SecurityPerm3 Is Nothing) Then
                    Console.WriteLine(("The intersection of " & Security1.ToString() & " and " _
                    & Security2.ToString() & " = " _
                    & CType(SecurityPerm3, SecurityPermission).Flags.ToString().ToString()))
                Else
                    Console.WriteLine(("The intersection of " & Security1.ToString() & " and " _
                    & Security2.ToString() & " is null."))
                End If 

            End While 

        End While 

        Return returnValue
    End Function 'IntersectDemo

    'Copy creates and returns an identical copy of the current permission. 
    Private Function CopyDemo() As Boolean 

        Dim returnValue As Boolean = True 

        Dim Security1 As SecurityPermissionFlag
        Dim SecurityPerm1, SecurityPerm2 As SecurityPermission

        Dim SecurityGen1 As New SecurityGenerator()
        Dim SecurityGen2 As New SecurityGenerator()

        SecurityGen1.ResetIndex()
        While SecurityGen1.GetSecurityFlag(Security1)
            SecurityPerm1 = New SecurityPermission(Security1)
            SecurityGen2.ResetIndex()
            Console.WriteLine("********************************************************" & ControlChars.Lf)
            Try
                SecurityPerm2 = CType(SecurityPerm1.Copy(), SecurityPermission)
                Console.WriteLine(("Result of copy = " & SecurityPerm2.ToString()))

            Catch e As Exception
                Console.WriteLine(("Copy failed :" & SecurityPerm1.ToString() & e.ToString()))
                Continue While 
            End Try 

        End While 
        Return returnValue
    End Function 'CopyDemo

    ' ToXml creates an XML encoding of the permission and its current state;  
    ' FromXml reconstructs a permission with the specified state from the XML encoding.  
    Private Function ToFromXmlDemo() As Boolean 

        Dim returnValue As Boolean = True 

        Dim Security1 As SecurityPermissionFlag
        Dim SecurityPerm1, SecurityPerm2 As SecurityPermission
        Dim SecurityGen1 As New SecurityGenerator()
        Dim SecurityGen2 As New SecurityGenerator()
        SecurityGen1.ResetIndex()
        While SecurityGen1.GetSecurityFlag(Security1)
            SecurityPerm1 = New SecurityPermission(Security1)
            Console.WriteLine("********************************************************" & ControlChars.Lf)
            SecurityGen2.ResetIndex()
            Try
                SecurityPerm2 = New SecurityPermission(PermissionState.None)
                SecurityPerm2.FromXml(SecurityPerm1.ToXml())
                Console.WriteLine(("Result of ToFromXml = " & SecurityPerm2.ToString()))

            Catch e As Exception
                Console.WriteLine(("ToFromXml failed :" & SecurityPerm1.ToString() & e.ToString()))
                Continue While 
            End Try 

        End While 

        Return returnValue
    End Function 'ToFromXmlDemo

    ' Invoke all demos. 
    Public Function runDemo() As Boolean 
        Dim returnCode As Boolean = True 
        Dim tempReturnCode As Boolean 

        ' Call the IsSubsetOf demo.
        tempReturnCode = IsSubsetOfDemo()
        If tempReturnCode Then
            Console.Out.WriteLine("IsSubsetOf demo completed successfully.")
        Else
            Console.Out.WriteLine("IsSubsetOf demo failed.")
        End If
        returnCode = tempReturnCode AndAlso returnCode

        ' Call the Union demo.
        tempReturnCode = UnionDemo()
        If tempReturnCode Then
            Console.Out.WriteLine("Union demo completed successfully.")
        Else
            Console.Out.WriteLine("Union demo failed.")
        End If
        returnCode = tempReturnCode AndAlso returnCode

        ' Call the Intersect demo.	
        tempReturnCode = IntersectDemo()
        If tempReturnCode Then
            Console.Out.WriteLine("Intersect demo completed successfully.")
        Else
            Console.Out.WriteLine("Intersect demo failed.")
        End If
        returnCode = tempReturnCode AndAlso returnCode


        ' Call the Copy demo.	
        tempReturnCode = CopyDemo()
        If tempReturnCode Then
            Console.Out.WriteLine("Copy demo completed successfully.")
        Else
            Console.Out.WriteLine("Copy demo failed.")
        End If
        returnCode = tempReturnCode AndAlso returnCode

        ' Call the ToFromXml demo.	
        tempReturnCode = ToFromXmlDemo()
        If tempReturnCode Then
            Console.Out.WriteLine("ToFromXml demo completed successfully.")
        Else
            Console.Out.WriteLine("ToFromXml demo failed.")
        End If
        returnCode = tempReturnCode AndAlso returnCode

        Return returnCode
    End Function 'runDemo

    ' Test harness. 
    Public Overloads Shared Sub Main(ByVal args() As [String])
        Try 
            Dim democase As New SecurityPermissionDemo()
            Dim returnCode As Boolean = democase.runDemo()
            If returnCode Then
                Console.Out.WriteLine("SecurityPermission demo completed successfully.")
                Console.Out.WriteLine("Press the Enter key to exit.")
                Dim consoleInput As String = Console.ReadLine()
                System.Environment.ExitCode = 100
            Else
                Console.Out.WriteLine("SecurityPermission demo failed.")
                Console.Out.WriteLine("Press the Enter key to exit.")
                Dim consoleInput As String = Console.ReadLine()
                System.Environment.ExitCode = 101
            End If 
        Catch e As Exception
            Console.Out.WriteLine("SecurityPermission demo failed.")
            Console.WriteLine(e.ToString())
            Console.Out.WriteLine("Press the Enter key to exit.")
            Dim consoleInput As String = Console.ReadLine()
            System.Environment.ExitCode = 101
        End Try 
    End Sub 'Main
End Class 'SecurityPermissionDemo


' This class generates SecurityPermission objects. 

Friend Class SecurityGenerator


    Private mySecurity As SecurityPermissionFlag() = {SecurityPermissionFlag.AllFlags, _
    SecurityPermissionFlag.Assertion Or SecurityPermissionFlag.ControlAppDomain, _
    SecurityPermissionFlag.ControlAppDomain, _
    SecurityPermissionFlag.ControlDomainPolicy Or SecurityPermissionFlag.ControlEvidence, _
    SecurityPermissionFlag.ControlEvidence, _
    SecurityPermissionFlag.ControlPolicy Or SecurityPermissionFlag.ControlPrincipal, _
    SecurityPermissionFlag.ControlPrincipal, _
    SecurityPermissionFlag.ControlThread, _
    SecurityPermissionFlag.Execution, _
    SecurityPermissionFlag.Infrastructure, _
    SecurityPermissionFlag.NoFlags, _
    SecurityPermissionFlag.RemotingConfiguration Or SecurityPermissionFlag.SerializationFormatter, _
    SecurityPermissionFlag.SerializationFormatter, _
    SecurityPermissionFlag.SkipVerification, _
    SecurityPermissionFlag.UnmanagedCode}

    Private reflectionIndex As Integer = 0


    Public Sub New()
        ResetIndex()
    End Sub 'New 


    Public Sub ResetIndex()
        reflectionIndex = 0
    End Sub 'ResetIndex

    ' GetSecurityFlag creates a SecurityPermission object. 
    Public Function GetSecurityFlag(ByRef Security As SecurityPermissionFlag) As Boolean 

        If reflectionIndex >= mySecurity.Length Then
            Security = SecurityPermissionFlag.NoFlags
            reflectionIndex &= 1
            Return False 
        End If
        Security = mySecurity(reflectionIndex)
        reflectionIndex = reflectionIndex + 1
        Return True 
    End Function 
End Class

System.Object
  System.Security.CodeAccessPermission
    System.Security.Permissions.SecurityPermission

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0
Show: