Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

HostProtectionAttribute classe

 

Date de publication : novembre 2016

Autorise l'utilisation d'actions de sécurité déclarative pour déterminer les exigences de protection de l'hôte. Cette classe ne peut pas être héritée.

Espace de noms:   System.Security.Permissions
Assembly:  mscorlib (dans mscorlib.dll)

System.Object
  System.Attribute
    System.Security.Permissions.SecurityAttribute
      System.Security.Permissions.CodeAccessSecurityAttribute
        System.Security.Permissions.HostProtectionAttribute

[SerializableAttribute]
[AttributeUsageAttribute(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Delegate, 
	AllowMultiple = true, Inherited = false)]
[ComVisibleAttribute(true)]
public sealed class HostProtectionAttribute : CodeAccessSecurityAttribute

NomDescription
System_CAPS_pubmethodHostProtectionAttribute()

Initialise une nouvelle instance de la classe HostProtectionAttribute avec des valeurs par défaut.

System_CAPS_pubmethodHostProtectionAttribute(SecurityAction)

Initialise une nouvelle instance de la classe HostProtectionAttribute avec la valeur SecurityAction spécifiée.

NomDescription
System_CAPS_pubpropertyAction

Obtient ou définit une action de sécurité.(Hérité de SecurityAttribute.)

System_CAPS_pubpropertyExternalProcessMgmt

Obtient ou définit une valeur qui indique si la gestion du processus externe est exposée.

System_CAPS_pubpropertyExternalThreading

Obtient ou définit une valeur qui indique si les threads externes son exposés.

System_CAPS_pubpropertyMayLeakOnAbort

Obtient ou définit une valeur qui indique si les ressources peuvent avoir une fuite de mémoire si l'opération est arrêtée.

System_CAPS_pubpropertyResources

Obtient ou définit des indicateurs qui spécifient des catégories de fonctionnalités potentiellement dangereuses pour l'hôte.

System_CAPS_pubpropertySecurityInfrastructure

Obtient ou définit une valeur qui indique si l'infrastructure de sécurité est exposée.

System_CAPS_pubpropertySelfAffectingProcessMgmt

Obtient ou définit une valeur qui indique si la gestion du processus à affectation automatique est exposée.

System_CAPS_pubpropertySelfAffectingThreading

Obtient ou définit une valeur qui indique si les threads à affectation automatique sont exposés.

System_CAPS_pubpropertySharedState

Obtient ou définit une valeur qui indique si l'état partagé est exposé.

System_CAPS_pubpropertySynchronization

Obtient ou définit une valeur qui indique si la synchronisation est exposée.

System_CAPS_pubpropertyTypeId

Lors de l'implémentation dans une classe dérivée, obtient un identificateur unique pour l'objet Attribute.(Hérité de Attribute.)

System_CAPS_pubpropertyUI

Obtient ou définit une valeur qui indique si l'interface utilisateur est exposée.

System_CAPS_pubpropertyUnrestricted

Obtient ou définit une valeur indiquant si l’autorisation complète (sans restriction) à la ressource protégée par l’attribut est déclarée.(Hérité de SecurityAttribute.)

NomDescription
System_CAPS_pubmethodCreatePermission()

Crée et retourne une nouvelle autorisation de protection d'hôte.(Remplace SecurityAttribute.CreatePermission().)

System_CAPS_pubmethodEquals(Object)

Cette API prend en charge l’infrastructure de produit et n’est pas destinée à être utilisée directement depuis votre code. Retourne une valeur qui indique si cette instance est égale à un objet spécifié.(Hérité de Attribute.)

System_CAPS_pubmethodGetHashCode()

Retourne le code de hachage de cette instance.(Hérité de Attribute.)

System_CAPS_pubmethodGetType()

Obtient le Type de l'instance actuelle.(Hérité de Object.)

System_CAPS_pubmethodIsDefaultAttribute()

En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut pour la classe dérivée.(Hérité de Attribute.)

System_CAPS_pubmethodMatch(Object)

En cas de substitution dans une classe dérivée, retourne une valeur qui indique si cette instance équivaut à un objet spécifié.(Hérité de Attribute.)

System_CAPS_pubmethodToString()

Retourne une chaîne qui représente l'objet actuel.(Hérité de Object.)

NomDescription
System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch.(Hérité de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Récupère les informations de type pour un objet, qui peuvent être utilisées pour obtenir les informations de type d'une interface.(Hérité de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfoCount(UInt32)

Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1).(Hérité de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fournit l'accès aux propriétés et aux méthodes exposées par un objet.(Hérité de Attribute.)

Cet attribut affecte uniquement les applications non managées qui hébergent le common language runtime et implémentent hôte protection, telles que SQL Server. Si le code est exécuté dans une application cliente ou sur un serveur qui n’est pas protégé par un hôte, l’attribut « s’évapore » ; Il n’est pas détecté et par conséquent pas appliqué. Lorsqu’il est appliqué, la création d’une demande de liaison, les résultats de l’action de sécurité basé sur les ressources hôtes expose la classe ou méthode.

System_CAPS_importantImportant

L’objectif de cet attribut consiste à appliquer la programmation suivre un modèle spécifique à l’hôte, pas les paramètres de sécurité. Bien qu’une demande de liaison vérifie la conformité aux spécifications de modèle, de programmation le HostProtectionAttribute n’est pas une autorisation de sécurité.

Si l’hôte n’a pas de spécifications de modèle de programmation, les demandes de liaison n’est effectuée.

Cet attribut identifie les éléments suivants :

  • Méthodes ou classes qui ne correspondent pas l’hôte de modèle de programmation, mais sont sans gravité.

  • Méthodes ou classes qui ne tiennent pas le modèle de programmation hôte et peut entraîner des déstabiliser le code utilisateur géré par le serveur.

  • Méthodes ou classes qui ne correspondent pas l’hôte de programmation du modèle et peuvent mener à une déstabilisation du processus serveur lui-même.

System_CAPS_noteRemarque

Si vous créez une bibliothèque de classes qui doit être appelée par les applications qui peuvent s’exécuter dans un environnement protégé, vous devez appliquer cet attribut aux membres qui exposent HostProtectionResource catégories de ressources. Membres de la bibliothèque de classes .NET Framework avec cet attribut provoquent uniquement l’appelant immédiat à vérifier. Votre membre de bibliothèque doit également demander une vérification de son appelant immédiat de la même manière.

System_CAPS_noteRemarque

N’utilisez pas le Ngen.exe (Native Image Generator) pour créer une image native des assemblys qui sont protégés par le HostProtectionAttribute. Dans un environnement de confiance totale, l’image est toujours chargé, sans tenir compte de le HostProtectionAttribute, et dans un environnement de confiance partielle l’image n’est pas chargé.

L’exemple de code suivant illustre l’utilisation de la HostProtectionAttribute attribut avec un large éventail de HostProtectionResource valeurs.

using System;
using System.IO;
using System.Threading;
using System.Security;
using System.Security.Policy;
using System.Security.Principal;
using System.Security.Permissions;
using System.Diagnostics;
using System.ComponentModel;
using System.Windows.Forms;

// If this application is run on a server that implements host protection, the 
// HostProtectionAttribute attribute is applied. If the application is run on   
// a server that is not host-protected, the attribute evaporates; it is not  
// detected and therefore not applied. Host protection can be configured with  
// members of the HostProtectionResource enumeration to customize the  
// protection offered.
// The primary intent of this sample is to show situations in which the 
// HostProtectionAttribute attribute might be meaningfully used. The  
// environment required to demonstrate a particular behavior is
// too complex to invoke within the scope of this sample.

class HostProtectionExample
{
    public static int Success = 100;

    // Use the enumeration flags to indicate that this method exposes 
    // shared state and self-affecting process management.
    // Either of the following attribute statements can be used to set the
    // resource flags.
    [HostProtectionAttribute(SharedState = true, 
        SelfAffectingProcessMgmt = true)]
    [HostProtectionAttribute(Resources = HostProtectionResource.SharedState |
         HostProtectionResource.SelfAffectingProcessMgmt)]
    private static void Exit(string Message, int Code)
    {
        // Exit the sample when an exception is thrown.
        Console.WriteLine("\nFAILED: " + Message + " " + Code.ToString());
        Environment.ExitCode = Code;
        Environment.Exit(Code);
    }

    // Use the enumeration flags to indicate that this method exposes shared 
    // state, self-affecting process management, and self-affecting threading.
    [HostProtectionAttribute(SharedState=true, SelfAffectingProcessMgmt=true,
         SelfAffectingThreading=true, UI=true)]
    // This method allows the user to quit the sample.
    private static void ExecuteBreak()
    {
        Console.WriteLine("Executing Debugger.Break.");
        Debugger.Break();
        Debugger.Log(1,"info","test message");
    }

    // Use the enumeration flags to indicate that this method exposes shared 
    // state, self-affecting threading, and the security infrastructure.
    [HostProtectionAttribute(SharedState=true, SelfAffectingThreading=true,
         SecurityInfrastructure=true)]
    // ApplyIdentity sets the current identity.
    private static int ApplyIdentity()
    {
        string[] roles = {"User"};
        try
        {
            AppDomain mAD = AppDomain.CurrentDomain;
            GenericPrincipal mGenPr = 
                new GenericPrincipal(WindowsIdentity.GetCurrent(), roles);
            mAD.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
            mAD.SetThreadPrincipal(mGenPr);
            return Success;
        }
        catch (Exception e)
        {
            Exit(e.ToString(), 5);
        }
        return 0;
    }

    // The following method is started on a separate thread.
    public static void WatchFileEvents()
    {
        try
        {
            Console.WriteLine("In the child thread.");
            FileSystemWatcher watcher = new FileSystemWatcher();
            watcher.Path = "C:\\Temp";

            // Watch for changes in LastAccess and LastWrite times, and
            // name changes to files or directories.
            watcher.NotifyFilter = NotifyFilters.LastAccess 
                | NotifyFilters.LastWrite
                | NotifyFilters.FileName | NotifyFilters.DirectoryName;

            // Watch only text files.
            watcher.Filter = "*.txt";

            // Add event handlers.
            watcher.Changed += new FileSystemEventHandler(OnChanged);
            watcher.Created += new FileSystemEventHandler(OnChanged);
            watcher.Deleted += new FileSystemEventHandler(OnChanged);

            // Begin watching.
            watcher.EnableRaisingEvents = true;

            // Wait for the user to quit the program.
            Console.WriteLine("Event handlers have been enabled.");
            while(Console.Read()!='q');
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
    }

    // Use the enumeration flags to indicate that this method exposes 
    // synchronization and external threading.
    [HostProtectionAttribute(Synchronization=true, ExternalThreading=true)]
    private static void StartThread()
    {
        Thread t = new Thread(new ThreadStart(WatchFileEvents));

        // Start the new thread. On a uniprocessor, the thread is not given
        // any processor time until the main thread yields the processor.
        t.Start();

        // Give the new thread a chance to execute.
        Thread.Sleep(1000);
    }

    // Call methods that show the use of the HostProtectionResource enumeration.
    [HostProtectionAttribute(Resources=HostProtectionResource.All)]
    static int Main(string [] args)
    {
        try
        {
            // Show use of the HostProtectionResource.SharedState,
            // HostProtectionResource.SelfAffectingThreading, and
            // HostProtectionResource.Security enumeration values.
            ApplyIdentity();
            Directory.CreateDirectory("C:\\Temp");

            // Show use of the HostProtectionResource.Synchronization and
            // HostProtectionResource.ExternalThreading enumeration values.
            StartThread();
            Console.WriteLine("In the main thread.");
            Console.WriteLine("Deleting and creating 'MyTestFile.txt'.");
            if (File.Exists("C:\\Temp\\MyTestFile.txt"))
            {
                File.Delete("C:\\Temp\\MyTestFile.txt");
            }

            StreamWriter sr = File.CreateText("C:\\Temp\\MyTestFile.txt");
            sr.WriteLine ("This is my file.");
            sr.Close();
            Thread.Sleep(1000);

            // Show use of the HostProtectionResource.SharedState,
            // HostProtectionResource.SelfProcessMgmt,
            // HostProtectionResource.SelfAffectingThreading, and
            // HostProtectionResource.UI enumeration values.
            ExecuteBreak();

            // Show the use of the 
            // HostProtectionResource.ExternalProcessManagement 
            // enumeration value.
            MyControl myControl = new MyControl ();
            Console.WriteLine ("Enter 'q' to quit the sample.");
            return 100;
        }
        catch (Exception e)
        {
            Exit(e.ToString(), 0);
            return 0;
        }
    }

    // Define the event handlers.
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        // Specify whether a file is changed, created, or deleted.
        Console.WriteLine("In the OnChanged event handler.");
        Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType);
    }
}

// The following class is an example of code that exposes 
// external process management.
// Add the LicenseProviderAttribute to the control.
[LicenseProvider (typeof(LicFileLicenseProvider))]
public class MyControl : System.Windows.Forms.Control
{
    // Create a new, null license.
    private License license = null;

    [HostProtection (ExternalProcessMgmt = true)]
    public MyControl ()
    {
        // Determine if a valid license can be granted.
        bool isValid = LicenseManager.IsValid (typeof(MyControl));
        Console.WriteLine ("The result of the IsValid method call is " + 
            isValid.ToString ());
    }

    protected override void Dispose (bool disposing)
    {
        if (disposing)
        {
            if (license != null)
            {
                license.Dispose ();
                license = null;
            }
        }
    }
}

.NET Framework
Disponible depuis 2.0

Tous les membres statiques publics ( Shared en Visual Basic) de ce type sont thread-safe. Les membres d’instance n’ont pas la garantie d’être thread-safe.

Retour au début
Afficher: