Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Clase CodeAccessPermission

 

Publicado: octubre de 2016

Define la estructura subyacente de todos los permisos de acceso del código.

Espacio de nombres:   System.Security
Ensamblado:  mscorlib (en mscorlib.dll)

System.Object
  System.Security.CodeAccessPermission
    System.Configuration.ConfigurationPermission
    System.Data.Common.DBDataPermission
    System.Data.OracleClient.OraclePermission
    System.Drawing.Printing.PrintingPermission
    System.Messaging.MessageQueuePermission
    System.Net.DnsPermission
    System.Net.Mail.SmtpPermission
    System.Net.NetworkInformation.NetworkInformationPermission
    System.Net.PeerToPeer.Collaboration.PeerCollaborationPermission
    System.Net.PeerToPeer.PnrpPermission
    System.Net.SocketPermission
    System.Net.WebPermission
    System.Security.Permissions.DataProtectionPermission
    System.Security.Permissions.EnvironmentPermission
    System.Security.Permissions.FileDialogPermission
    System.Security.Permissions.FileIOPermission
    System.Security.Permissions.GacIdentityPermission
    System.Security.Permissions.IsolatedStoragePermission
    System.Security.Permissions.KeyContainerPermission
    System.Security.Permissions.MediaPermission
    System.Security.Permissions.PublisherIdentityPermission
    System.Security.Permissions.ReflectionPermission
    System.Security.Permissions.RegistryPermission
    System.Security.Permissions.ResourcePermissionBase
    System.Security.Permissions.SecurityPermission
    System.Security.Permissions.SiteIdentityPermission
    System.Security.Permissions.StorePermission
    System.Security.Permissions.StrongNameIdentityPermission
    System.Security.Permissions.TypeDescriptorPermission
    System.Security.Permissions.UIPermission
    System.Security.Permissions.UrlIdentityPermission
    System.Security.Permissions.WebBrowserPermission
    System.Security.Permissions.ZoneIdentityPermission
    System.Transactions.DistributedTransactionPermission
    System.Web.AspNetHostingPermission
    System.Xaml.Permissions.XamlLoadPermission

<SerializableAttribute>
<ComVisibleAttribute(True)>
<SecurityPermissionAttribute(SecurityAction.InheritanceDemand,
	ControlEvidence := True, ControlPolicy := True)>
Public MustInherit Class CodeAccessPermission
	Implements IPermission, ISecurityEncodable, IStackWalk

NombreDescripción
System_CAPS_protmethodCodeAccessPermission()

Inicializa una nueva instancia de la clase CodeAccessPermission.

NombreDescripción
System_CAPS_pubmethodAssert()

Declara que el código de llamada puede tener acceso al recurso protegido por una demanda de permiso a través del código que llama a este método, incluso si los autores de la llamada situados en una posición más alta de la pila no tienen permiso para tener acceso al recurso. El uso de Assert puede crear problemas de seguridad.

System_CAPS_pubmethodCopy()

Cuando se implementa mediante una clase derivada, crea y devuelve una copia idéntica del objeto de permiso actual.

System_CAPS_pubmethodDemand()

Fuerza a un SecurityException en tiempo de ejecución si todos los autores de llamada situados en la parte superior de la pila de llamadas no disponen del permiso especificado por la instancia actual.

System_CAPS_pubmethodDeny()

Obsoleto. Impide que los autores de la llamada situados en la posición más alta de la pila de llamadas usen el código que llama a este método para tener acceso al recurso especificado por la instancia actual.

System_CAPS_pubmethodEquals(Object)

Determina si el objeto CodeAccessPermission especificado es igual al objeto CodeAccessPermission actual.(Invalida Object.Equals(Object)).

System_CAPS_protmethodFinalize()

Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por el recolector de basura. (Heredado de Object).

System_CAPS_pubmethodFromXml(SecurityElement)

Cuando se invalida en una clase derivada, reconstruye un objeto de seguridad con un estado especificado a partir de codificación XML.

System_CAPS_pubmethodGetHashCode()

Obtiene un código hash para el objeto CodeAccessPermission que es adecuado para usarlo en algoritmos hash y las estructuras de datos, como una tabla hash.(Invalida Object.GetHashCode()).

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual.(Heredado de Object).

System_CAPS_pubmethodIntersect(IPermission)

Cuando se implementa mediante una clase derivada, crea y devuelve un permiso que es la intersección del permiso actual y el permiso especificado.

System_CAPS_pubmethodIsSubsetOf(IPermission)

Cuando se implementa mediante una clase derivada, determina si el permiso actual es un subconjunto del permiso especificado.

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficial del Object actual.(Heredado de Object).

System_CAPS_pubmethodPermitOnly()

Impide que los llamadores situados más arriba en la pila de llamadas usen el código que llama a este método para tener acceso a todos los recursos excepto al recurso especificado por la instancia actual.

System_CAPS_pubmethodSystem_CAPS_staticRevertAll()

Provoca que se eliminen todos los reemplazos anteriores del marco actual y que ya no estén en vigor.

System_CAPS_pubmethodSystem_CAPS_staticRevertAssert()

Provoca que se elimine cualquier Assert anterior para el marco actual y que ya no esté en vigor.

System_CAPS_pubmethodSystem_CAPS_staticRevertDeny()

Obsoleto. Provoca que se elimine cualquier Deny anterior para el marco actual y que ya no esté en vigor.

System_CAPS_pubmethodSystem_CAPS_staticRevertPermitOnly()

Provoca que se elimine cualquier PermitOnly anterior para el marco actual y que ya no esté en vigor.

System_CAPS_pubmethodToString()

Crea y devuelve una representación de cadena del objeto de permiso actual.(Invalida Object.ToString()).

System_CAPS_pubmethodToXml()

Cuando se invalida en una clase derivada, crea una codificación XML del objeto de seguridad y su estado actual.

System_CAPS_pubmethodUnion(IPermission)

Cuando se invalida en una clase derivada, crea un permiso que es la unión del permiso actual y el permiso especificado.

Code access permissions use a stack walk to ensure that all callers of the code have been granted a permission. If a permission object is null, it is handled the same as a permission object with the state F:System.Security.Permissions.PermissionState.None.

The call stack is typically represented as growing down, so that methods higher in the call stack call methods lower in the call stack.

Inheritors of the T:System.Security.CodeAccessPermission class must be granted full trust to function correctly as permissions extending the security infrastructure. To determine that the inheritors are fully trusted, T:System.Security.CodeAccessPermission issues an F:System.Security.Permissions.SecurityAction.InheritanceDemand for F:System.Security.Permissions.SecurityPermissionFlag.ControlEvidence = true and F:System.Security.Permissions.SecurityPermissionFlag.ControlPolicy = true.

Notas para desarrolladores de herederos:

When you inherit from T:System.Security.CodeAccessPermission, you must also implement the T:System.Security.Permissions.IUnrestrictedPermission interface.

The following T:System.Security.CodeAccessPermission members must be overridden: M:System.Security.CodeAccessPermission.Copy, M:System.Security.CodeAccessPermission.Intersect(System.Security.IPermission), M:System.Security.CodeAccessPermission.IsSubsetOf(System.Security.IPermission), M:System.Security.CodeAccessPermission.ToXml, M:System.Security.CodeAccessPermission.FromXml(System.Security.SecurityElement), and M:System.Security.CodeAccessPermission.Union(System.Security.IPermission).

You must also define a constructor that takes a T:System.Security.Permissions.PermissionState as its only parameter.

You must apply the T:System.SerializableAttribute attribute to a class that inherits from T:System.Security.CodeAccessPermission.

The following code example shows a permission derived from the T:System.Security.CodeAccessPermission class.

' This custom permission is intended only for the purposes of illustration.
' The following code shows how to create a custom permission that inherits
' from CodeAccessPermission. The code implements all required overrides.
' A wildcard character ('*') is implemented for the Name property.
Imports System
Imports System.Security
Imports System.Security.Permissions
Imports System.IO
Imports System.Security.Policy
Imports System.Collections
Imports Microsoft.VisualBasic

<assembly: System.Reflection.AssemblyKeyFile("Key.snk")>

<assembly: System.Security.AllowPartiallyTrustedCallersAttribute()>
Namespace MyPermission

    <Serializable()> _
                   Public NotInheritable Class NameIdPermission
        Inherits CodeAccessPermission
        Implements IUnrestrictedPermission
        Private m_Name As String
        Private m_Unrestricted As Boolean


        Public Sub New(ByVal name As String)
            m_name = name
        End Sub 'NewNew


        Public Sub New(ByVal state As PermissionState)
            If state = PermissionState.None Then
                m_name = ""
            ElseIf state = PermissionState.Unrestricted Then
                Throw New ArgumentException("Unrestricted state is not allowed for identity permissions.")
            Else
                Throw New ArgumentException("Invalid permission state.")
            End If
        End Sub 'New 

        Public Property Name() As String
            Get
                Return m_name
            End Get
            Set(ByVal Value As String)
                m_name = Value
            End Set
        End Property

        Public Overrides Function Copy() As IPermission
            Dim name As String
            name = m_name
            Return New NameIdPermission(name)
        End Function 'Copy

        Public Function IsUnrestricted() As Boolean Implements IUnrestrictedPermission.IsUnrestricted
            ' Always false, unrestricted state is not allowed.
            Return m_Unrestricted
        End Function
        Private Function VerifyType(ByVal target As IPermission) As Boolean
            Return TypeOf target Is NameIdPermission
        End Function 'VerifyType

        Public Overrides Function IsSubsetOf(ByVal target As IPermission) As Boolean

#If (Debug) Then

            Console.WriteLine("************* Entering IsSubsetOf *********************")
#End If
            If target Is Nothing Then
                Console.WriteLine("IsSubsetOf: target == null")
                Return False
            End If
#If (Debug) Then
            Console.WriteLine(("This is = " + CType(Me, NameIdPermission).Name))
            Console.WriteLine(("Target is " + CType(target, NameIdPermission).m_name))
#End If
            Try
                Dim operand As NameIdPermission = CType(target, NameIdPermission)

                ' The following check for unrestricted permission is only included as an example for
                ' permissions that allow the unrestricted state. It is of no value for this permission.
                If True = operand.m_Unrestricted Then
                    Return True
                ElseIf True = Me.m_Unrestricted Then
                    Return False
                End If

                If Not (Me.m_name Is Nothing) Then
                    If operand.m_name Is Nothing Then
                        Return False
                    End If
                    If Me.m_name = "" Then
                        Return True
                    End If
                End If
                If Me.m_name.Equals(operand.m_name) Then
                    Return True
                Else
                    ' Check for wild card character '*'.
                    Dim i As Integer = operand.m_name.LastIndexOf("*")

                    If i > 0 Then
                        Dim prefix As String = operand.m_name.Substring(0, i)

                        If Me.m_name.StartsWith(prefix) Then
                            Return True
                        End If
                    End If
                End If

                Return False
            Catch
                Throw New ArgumentException(String.Format("Argument_WrongType", Me.GetType().FullName))
            End Try
        End Function

        Public Overrides Function Intersect(ByVal target As IPermission) As IPermission
            Console.WriteLine("************* Entering Intersect *********************")
            If target Is Nothing Then
                Return Nothing
            End If
#If (Debug) Then

            Console.WriteLine(("This is = " + CType(Me, NameIdPermission).Name))
            Console.WriteLine(("Target is " + CType(target, NameIdPermission).m_name))
#End If
            If Not VerifyType(target) Then
                Throw New ArgumentException(String.Format("Argument is wrong type.", Me.GetType().FullName))
            End If

            Dim operand As NameIdPermission = CType(target, NameIdPermission)

            If operand.IsSubsetOf(Me) Then
                Return operand.Copy()
            ElseIf Me.IsSubsetOf(operand) Then
                Return Me.Copy()
            Else
                Return Nothing
            End If
        End Function 'Intersect

        Public Overrides Function Union(ByVal target As IPermission) As IPermission
#If (Debug) Then

            Console.WriteLine("************* Entering Union *********************")
#End If
            If target Is Nothing Then
                Return Me
            End If
#If (Debug) Then
            Console.WriteLine(("This is = " + CType(Me, NameIdPermission).Name))
            Console.WriteLine(("Target is " + CType(target, NameIdPermission).m_name))
#End If
            If Not VerifyType(target) Then
                Throw New ArgumentException(String.Format("Argument_WrongType", Me.GetType().FullName))
            End If

            Dim operand As NameIdPermission = CType(target, NameIdPermission)

            If operand.IsSubsetOf(Me) Then
                Return Me.Copy()
            ElseIf Me.IsSubsetOf(operand) Then
                Return operand.Copy()
            Else
                Return Nothing
            End If
        End Function 'Union

        Public Overrides Sub FromXml(ByVal e As SecurityElement)
            ' The following code for unrestricted permission is only included as an example for
            ' permissions that allow the unrestricted state. It is of no value for this permission.
            Dim elUnrestricted As String = e.Attribute("Unrestricted")
            If Nothing <> elUnrestricted Then
                m_Unrestricted = Boolean.Parse(elUnrestricted)
                Return
            End If

            Dim elName As String = e.Attribute("Name")
            m_name = IIf(elName Is Nothing, Nothing, elName)
        End Sub 'FromXml

        Public Overrides Function ToXml() As SecurityElement
            ' Use the SecurityElement class to encode the permission to XML.
            Dim esd As New SecurityElement("IPermission")

            Dim name As String = GetType(NameIdPermission).AssemblyQualifiedName
            esd.AddAttribute("class", name)
            esd.AddAttribute("version", "1.0")

            ' The following code for unrestricted permission is only included as an example for
            ' permissions that allow the unrestricted state. It is of no value for this permission.
            If m_Unrestricted Then
                esd.AddAttribute("Unrestricted", True.ToString())
            End If
            If Not (m_Name Is Nothing) Then
                esd.AddAttribute("Name", m_Name)
            End If
            Return esd
        End Function 'ToXml
    End Class ' NameIdPermission 
End Namespace

InheritanceDemand

for the ability of inheritors to provide evidence and view and modify policy. Associated enumerations: F:System.Security.Permissions.SecurityPermissionFlag.ControlEvidence, F:System.Security.Permissions.SecurityPermissionFlag.ControlPolicy.

.NET Framework
Disponible desde 1.1

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Volver al principio
Mostrar: