Partager via


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

Demande d'autorisations

Référence

SecurityPermissionAttribute

SecurityAction

SecurityPermissionFlag.UnmanagedCode

Autres ressources

Extension des métadonnées à l'aide des attributs

Sécurité d'accès du code

Métadonnées et composants autodescriptifs