Cómo: Solicitar permiso para obtener acceso a código no administrado
Actualización: noviembre 2007
Los permisos se pueden solicitar fácilmente mediante la aplicación de atributos que representan los permisos que se desean solicitar en el nivel de ensamblado del código. Los atributos que se pueden utilizar varían dependiendo de los permisos que se soliciten. El motor en tiempo de ejecución compila las solicitudes en los metadatos del manifiesto del ensamblado de la aplicación y las evalúa cuando el código se carga en la memoria durante la ejecución.
En el ejemplo siguiente se muestra cómo solicitar permiso para obtener acceso a código no administrado. Observe que se utiliza SecurityPermissionAttribute y se especifican dos valores: un valor SecurityAction que especifica la clase de solicitud de permiso que se está realizando (RequestMinimum, en este caso) y un marcador que muestra qué permiso se está solicitando. En este caso, SecurityPermissionFlag.UnmanagedCode especifica una solicitud de permiso para código no administrado. La sintaxis assembly: indica al compilador que el atributo se aplica en el nivel de ensamblado.
Ejemplo
Imports System
Imports System.Security.Permissions
Imports System.Runtime.InteropServices
'The request is placed at the assembly level.
<assembly: SecurityPermissionAttribute(SecurityAction.RequestMinimum, Flags := SecurityPermissionFlag.UnmanagedCode)>
Namespace MyNamespace
Public Class MyClass1
Public Sub New()
End Sub
Public Sub MyMethod()
'Perform interoperation with unmanaged code here.
End Sub
End Class
End Namespace
//The request is placed at the assembly level.
using System.Security.Permissions;
[assembly:SecurityPermissionAttribute(SecurityAction.RequestMinimum, Flags = SecurityPermissionFlag.UnmanagedCode)]
namespace MyNamespace {
using System;
using System.Runtime.InteropServices;
public class MyClass {
public MyClass() {
}
public void MyMethod() {
//Perform interoperation with unmanaged code here.
}
}
}
Si el código anterior no recibe un permiso SecurityPermission con el marcador UnmanagedCode, el motor en tiempo de ejecución produce una excepción PolicyException y el código no se ejecuta. No obstante, si el código recibe ese permiso, entonces puede ejecutarse.
Vea también
Conceptos
Referencia
SecurityPermissionFlag.UnmanagedCode