Gewusst wie: Anfordern von Berechtigungen für den Zugriff auf nicht verwalteten Code

Aktualisiert: November 2007

Sie können Berechtigungen auf einfache Weise anfordern, indem Sie Attribute, die die anzufordernden Berechtigungen darstellen, auf die Assemblyebene des Codes anwenden. Die verwendeten Attribute können in Abhängigkeit von den angeforderten Berechtigungen variieren. Anforderungen werden in die Metadaten des Assemblymanifests der Anwendung kompiliert und von der Common Language Runtime ausgewertet, wenn der Code bei der Ausführung in den Speicher geladen wird.

Das folgende Beispiel veranschaulicht das Anfordern einer Berechtigung für den Zugriff auf nicht verwalteten Code. Beachten Sie, dass ein SecurityPermissionAttribute verwendet wird und zwei Werte festgelegt werden: ein SecurityAction-Wert, der die Art der vorgenommenen Berechtigungsanforderung angibt (in diesem Fall RequestMinimum), und ein Flag, das die angeforderte Berechtigung angibt. In diesem Fall gibt SecurityPermissionFlag.UnmanagedCode eine Anforderung der Berechtigung für nicht verwalteten Code an. Die Syntax assembly: informiert den Compiler, dass das Attribut auf der Assemblyebene angewendet wird.

Beispiel

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.
      }
   }
}

Wenn der vorhergehende Code keine SecurityPermission mit dem UnmanagedCode-Flag erhält, löst die Laufzeit eine PolicyException aus, und der Code kann nicht ausgeführt werden. Wenn der Code diese Berechtigung jedoch erhält, darf er ausgeführt werden.

Siehe auch

Konzepte

Anfordern von Berechtigungen

Referenz

SecurityPermissionAttribute

SecurityAction

SecurityPermissionFlag.UnmanagedCode

Weitere Ressourcen

Erweitern von Metadaten mithilfe von Attributen

Codezugriffssicherheit

Metadaten und selbstbeschreibende Komponenten