Comment : demander l'autorisation d'accéder à du code non managé
Mise à jour : novembre 2007
Vous pouvez aisément demander des autorisations en appliquant les attributs qui représentent les autorisations que vous souhaitez demander au niveau de l'assembly de votre code. Les attributs que vous utilisez peuvent varier, en fonction des autorisations que vous demandez. Les demandes sont compilées dans les métadonnées du manifeste d'assembly de votre application et évaluées par le runtime lorsque votre code est chargé en mémoire pendant l'exécution.
L'exemple suivant illustre comment demander l'autorisation d'accéder à du code non managé. Notez qu'il utilise SecurityPermissionAttribute et qu'il spécifie deux valeurs : une valeur SecurityAction qui spécifie le type de demande d'autorisation effectuée (RequestMinimum dans le cas présent) et un indicateur qui spécifie l'autorisation demandée. Dans le cas présent, SecurityPermissionFlag.UnmanagedCode spécifie une demande pour une autorisation de code non managé. La syntaxe assembly: indique au compilateur que l'attribut est appliqué au niveau de l'assembly.
Exemple
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 le code précédent ne reçoit pas SecurityPermission avec l'indicateur UnmanagedCode, le runtime lève une exception PolicyException et le code n'est pas autorisé à s'exécuter. Cependant, si le code reçoit effectivement cette autorisation, il est alors autorisé à s'exécuter.
Voir aussi
Concepts
Référence
SecurityPermissionFlag.UnmanagedCode