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
Riferimenti
SecurityPermissionFlag.UnmanagedCode
Altre risorse
Estensione di metadati mediante attributi