Condividi tramite


Procedura: richiedere l'autorizzazione di accesso a codice non gestito

Aggiornamento: novembre 2007

La richiesta di autorizzazioni può essere facilmente effettuata applicando nel codice a livello di assembly attributi che rappresentano le autorizzazioni che si desidera richiedere. Gli attributi utilizzabili possono variare in base alle autorizzazioni da richiedere. Le richieste vengono compilate nei metadati del manifesto dell'assembly dell'applicazione e valutate durante l'esecuzione del codice, al momento del relativo caricamento in memoria.

Nell'esempio che segue viene illustrato come richiedere l'autorizzazione per accedere a codice non gestito. Viene utilizzata una classe SecurityPermissionAttribute e vengono specificati due valori: un valore SecurityAction che indica il tipo di richiesta di autorizzazione effettuato (in questo caso RequestMinimum) e un flag che indica l'autorizzazione richiesta. Nell'esempio, SecurityPermissionFlag.UnmanagedCode indica una richiesta di autorizzazione per codice non gestito. La sintassi assembly: indica al compilatore che l'attributo viene applicato a livello di assembly.

Esempio

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

Se il codice precedente non riceve un'autorizzazione SecurityPermission con il flag UnmanagedCode, sarà generata un'eccezione PolicyException e l'esecuzione del codice non sarà consentita. Se invece il codice riceve l'autorizzazione, ne sarà consentita l'esecuzione.

Vedere anche

Concetti

Richiesta di autorizzazioni

Riferimenti

SecurityPermissionAttribute

SecurityAction

SecurityPermissionFlag.UnmanagedCode

Altre risorse

Estensione di metadati mediante attributi

Protezione dall'accesso di codice

Metadati e componenti auto-descrittivi