Partage via


SecurityAction Énumération

Définition

Attention

Code Access Security is not supported or honored by the runtime.

Spécifie les actions de sécurité qui peuvent être effectuées à l’aide de la sécurité déclarative.

public enum class SecurityAction
[System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public enum SecurityAction
public enum SecurityAction
[System.Serializable]
public enum SecurityAction
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum SecurityAction
[<System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type SecurityAction = 
type SecurityAction = 
[<System.Serializable>]
type SecurityAction = 
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type SecurityAction = 
Public Enum SecurityAction
Héritage
SecurityAction
Attributs

Champs

Assert 3

Le code appelant peut accéder à la ressource identifiée par l’objet d’autorisation actuel, même si les appelants figurant plus haut dans la pile ne disposent pas de l’autorisation d’accéder à la ressource (consultez Utilisation de la méthode Assert).

Demand 2

Tous les appelants figurant plus haut dans la pile des appels doivent disposer de l’autorisation spécifiée par l’objet d’autorisation actuel.

Deny 4

La possibilité d’accéder à la ressource spécifiée par l’objet d’autorisation actuel est refusée aux appelants, même s’ils disposent de l’autorisation d’y accéder (consultez Utilisation de la méthode Deny).

InheritanceDemand 7

La classe dérivée qui hérite de la classe ou qui substitue une méthode doit avoir reçu l'autorisation spécifiée.

LinkDemand 6

L’appelant immédiat doit avoir reçu l’autorisation spécifiée. N’utilisez pas dans .NET Framework 4. Pour un niveau de confiance totale, utilisez plutôt SecurityCriticalAttribute ; pour un niveau de confiance partielle, utilisez Demand.

PermitOnly 5

Seules les ressources spécifiées par l’objet d’autorisation sont accessibles, même si le code a reçu l’autorisation d’accéder à d’autres ressources.

RequestMinimum 8

Requête des autorisations minimales pour que le code s’exécute. Cette action ne peut être utilisée que dans la portée de l’assembly.

RequestOptional 9

Requête d’autorisations supplémentaires et facultatives (non requises pour l’exécution). Cette requête refuse implicitement toutes les autres autorisations qui ne sont pas spécifiquement demandées. Cette action ne peut être utilisée que dans la portée de l’assembly.

RequestRefuse 10

Requête pour que les autorisations qui peuvent être utilisées abusivement ne soient pas accordées au code appelant. Cette action ne peut être utilisée que dans la portée de l’assembly.

Exemples

Cet exemple montre comment notifier au CLR que le code dans les méthodes appelées contient uniquement IsolatedStoragePermission, et montre également comment écrire et lire à partir d’un stockage isolé.

using namespace System;
using namespace System::Security;
using namespace System::Security::Permissions;
using namespace System::IO::IsolatedStorage;
using namespace System::IO;


static void WriteIsolatedStorage()
{
    try
    {
        // Attempt to create a storage file that is isolated by
        // user and assembly. IsolatedStorageFilePermission
        // granted to the attribute at the top of this file
        // allows CLR to load this assembly and execution of this
        // statement.
        Stream^ fileCreateStream = gcnew
            IsolatedStorageFileStream(
            "AssemblyData",
            FileMode::Create,
            IsolatedStorageFile::GetUserStoreForAssembly());

        StreamWriter^ streamWriter = gcnew StreamWriter(
            fileCreateStream);
        try
        {
            // Write some data out to the isolated file.

            streamWriter->Write("This is some test data.");
            streamWriter->Close();	
        }
        finally
        {
            delete fileCreateStream;
            delete streamWriter;
        } 
    }
    catch (IOException^ ex)
    {
        Console::WriteLine(ex->Message);
    }

    try
    {
        Stream^ fileOpenStream =
            gcnew IsolatedStorageFileStream(
            "AssemblyData",
            FileMode::Open,
            IsolatedStorageFile::GetUserStoreForAssembly());
        // Attempt to open the file that was previously created.

        StreamReader^ streamReader = gcnew StreamReader(
            fileOpenStream);
        try
        { 
            // Read the data from the file and display it.

            Console::WriteLine(streamReader->ReadLine());
            streamReader->Close();
        }
        finally
        {
            delete fileOpenStream;
            delete streamReader;
        }
    }
    catch (FileNotFoundException^ ex)
    {
        Console::WriteLine(ex->Message);
    }
    catch (IOException^ ex)
    {
        Console::WriteLine(ex->Message);
    }
}
// Notify the CLR to only grant IsolatedStorageFilePermission to called methods. 
// This restricts the called methods to working only with storage files that are isolated 
// by user and assembly.
[IsolatedStorageFilePermission(SecurityAction::PermitOnly, UsageAllowed = IsolatedStorageContainment::AssemblyIsolationByUser)]
int main()
{
    WriteIsolatedStorage();
}

// This code produces the following output.
//
//  This is some test data.
using System;
using System.Security.Permissions;
using System.IO.IsolatedStorage;
using System.IO;

// Notify the CLR to only grant IsolatedStorageFilePermission to called methods.
// This restricts the called methods to working only with storage files that are isolated
// by user and assembly.
[IsolatedStorageFilePermission(SecurityAction.PermitOnly, UsageAllowed = IsolatedStorageContainment.AssemblyIsolationByUser)]
public sealed class App
{
    static void Main()
    {
        WriteIsolatedStorage();
    }
    private static void WriteIsolatedStorage()
    {
        // Attempt to create a storage file that is isolated by user and assembly.
        // IsolatedStorageFilePermission granted to the attribute at the top of this file
        // allows CLR to load this assembly and execution of this statement.
        using (Stream s = new IsolatedStorageFileStream("AssemblyData", FileMode.Create, IsolatedStorageFile.GetUserStoreForAssembly()))
        {

            // Write some data out to the isolated file.
            using (StreamWriter sw = new StreamWriter(s))
            {
                sw.Write("This is some test data.");
            }
        }

        // Attempt to open the file that was previously created.
        using (Stream s = new IsolatedStorageFileStream("AssemblyData", FileMode.Open, IsolatedStorageFile.GetUserStoreForAssembly()))
        {
            // Read the data from the file and display it.
            using (StreamReader sr = new StreamReader(s))
            {
                Console.WriteLine(sr.ReadLine());
            }
        }
    }
}

// This code produces the following output.
//
//  Some test data.
Option Strict On
Imports System.Security.Permissions
Imports System.IO.IsolatedStorage
Imports System.IO


' Notify the CLR to only grant IsolatedStorageFilePermission to called methods. 
' This restricts the called methods to working only with storage files that are isolated 
' by user and assembly.
<IsolatedStorageFilePermission(SecurityAction.PermitOnly, UsageAllowed:=IsolatedStorageContainment.AssemblyIsolationByUser)> _
Public NotInheritable Class App

    Shared Sub Main()
        WriteIsolatedStorage()
    End Sub
    Shared Sub WriteIsolatedStorage()
        ' Attempt to create a storage file that is isolated by user and assembly.
        ' IsolatedStorageFilePermission granted to the attribute at the top of this file 
        ' allows CLR to load this assembly and execution of this statement.
        Dim s As New IsolatedStorageFileStream("AssemblyData", FileMode.Create, IsolatedStorageFile.GetUserStoreForAssembly())
        Try

            ' Write some data out to the isolated file.
            Dim sw As New StreamWriter(s)
            Try
                sw.Write("This is some test data.")
            Finally
                sw.Dispose()
            End Try
        Finally
            s.Dispose()
        End Try

        ' Attempt to open the file that was previously created.
        Dim t As New IsolatedStorageFileStream("AssemblyData", FileMode.Open, IsolatedStorageFile.GetUserStoreForAssembly())
        Try
            ' Read the data from the file and display it.
            Dim sr As New StreamReader(t)
            Try
                Console.WriteLine(sr.ReadLine())
            Finally
                sr.Dispose()
            End Try
        Finally
            t.Dispose()
        End Try

    End Sub
End Class

' This code produces the following output.
'
'  Some test data.

Remarques

Attention

La sécurité d’accès du code (CAS) a été déconseillée dans toutes les versions du .NET Framework et de .NET. Les versions récentes de .NET ne respectent pas les annotations CAS et produisent des erreurs si les API liées à CAS sont utilisées. Les développeurs doivent chercher d’autres moyens pour accomplir les tâches liées à la sécurité.

Le tableau suivant décrit la durée de chaque action de sécurité et les cibles qu’elle prend en charge.

Important

Dans .NET Framework 4, la prise en charge du runtime a été supprimée pour l’application des demandes d’autorisation Deny, RequestMinimum, RequestOptional et RequestRefuse. Ces demandes ne doivent pas être utilisées dans du code basé sur .NET Framework 4 ou version ultérieure. Pour plus d’informations sur ces modifications et d’autres, consultez Modifications de sécurité.

Vous ne devez pas utiliser LinkDemand dans .NET Framework 4. Au lieu de cela, utilisez pour limiter l’utilisation SecurityCriticalAttribute aux applications entièrement approuvées ou pour Demand limiter les appelants partiellement approuvés.

Déclaration d’action de sécurité Heure d’action Cibles prises en charge
LinkDemand (ne pas utiliser dans .NET Framework 4) Compilation juste-à-temps Classe, méthode
InheritanceDemand Temps de chargement Classe, méthode
Demand En cours d’exécution Classe, méthode
Assert En cours d’exécution Classe, méthode
Deny (obsolète dans .NET Framework 4) En cours d’exécution Classe, méthode
PermitOnly En cours d’exécution Classe, méthode
RequestMinimum (obsolète dans .NET Framework 4) Durée d’octroi Assembly
RequestOptional (obsolète dans .NET Framework 4) Durée d’octroi Assembly
RequestRefuse (obsolète dans .NET Framework 4) Durée d’octroi Assembly

Pour plus d’informations sur les cibles d’attribut, consultez Attribute.

S’applique à