SecurityAction Énumération
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
- 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.