Partager via


Comment : demander des autorisations minimales à l'aide de l'indicateur RequestMinimum

Mise à jour : novembre 2007

RequestMinimum vous permet de demander un jeu d'autorisations minimum requis pour l'exécution de votre code. En revanche, l'indicateur RequestRefuse vous permet de refuser des autorisations en spécifiant de manière explicite celles qui ne doivent pas être accordées à votre code.

Contrairement à l'utilisation de l'indicateur RequestMinimum, votre application s'exécutera si elle ne reçoit pas toutes les autorisations que vous demandez à l'aide de l'indicateur RequestOptional et une exception SecurityException sera levée lorsque votre application tentera d'accéder à une ressource protégée. Si vous utilisez ce type de demande, vous devez permettre à votre code d'intercepter toute exception qui sera levée si votre code n'a pas reçu l'autorisation optionnelle.

L'exemple suivant demande FileIOPermission à l'aide de l'indicateur RequestMinimum. L'exemple ne s'exécutera pas si l'autorisation demandée ne lui a pas été accordée. Cet exemple suppose qu'une classe hypothétique Log existe dans LogNameSpace. La classe Log contient la méthode MakeLog qui crée un nouveau fichier journal sur l'ordinateur local. Cette application crée une nouvelle instance de la classe Log et exécute la méthode MakeLog dans le bloc try. À l'aide du mot clé catch, elle intercepte l'SecurityException levée et affiche un message.

Exemple

Imports System
Imports System.Security
'The hypothetical class log is in this namespace.
Imports LogNameSpace
Imports System.Security.Permissions
'The request is placed at the assembly level.
<assembly: FileIOPermission(SecurityAction.RequestMinimum, Unrestricted := True)>

Namespace MyNamespace
   Public Class MyClass1
      
      Public Sub New()

      End Sub
      
      'Entry point that delegates to C-style main Private Function.
      Public Overloads Shared Sub Main()
         Main(System.Environment.GetCommandLineArgs())
      End Sub
      
      Overloads Public Shared Sub Main(args() As String)
         'Put any code that requires optional permissions in the try block. 
         Try
            Dim MyLog As New Log()
            MyLog.MakeLog()
            Console.WriteLine("The Log has been created.")
         'Catch the security exception and inform the user that the 
         'application was not granted FileIOPermission.
         Catch
            Console.WriteLine("This application does not have permission to write to the disk.")
         End Try
      End Sub
   End Class
End Namespace     
//The request is placed at the assembly level.
using System.Security.Permissions;
[assembly:FileIOPermission(SecurityAction.RequestMinimum, Unrestricted = true)]

namespace MyNamespace {
   using System;
   using System.Security;
   //The hypothetical class log is in this namespace.
   using LogNameSpace;

   public class MyClass {
      public MyClass() {
      }

      public static void Main(string[] args) {
         //Put any code that requires optional permissions in the try block. 
         try {
            Log MyLog = new Log();
            MyLog.MakeLog();
            Console.WriteLine("The Log has been created.");
         }
         //Catch the security exception and inform the user that the 
         //application was not granted FileIOPermission.
         catch(SecurityException) {
            Console.WriteLine("This application does not have permission to write to the disk.");
         }
      }
   }
}

Le code précédent crée le fichier journal et affiche le message suivant dans la console s'il a les autorisations suffisantes :

The Log has been created.

Si le code est exécuté à partir d'un partage et si les paramètres de sécurité locaux ne permettent pas à ce code d'avoir FileIOPermission, le code ne reçoit pas l'autorisation suffisante et affiche le message suivant :

This application does not have permission to write to the disk.

Voir aussi

Concepts

Demande d'autorisations

Référence

SecurityAction

FileIOPermission

UIPermission

Autres ressources

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

Sécurité d'accès du code