Partager via


SecurityState Classe

Définition

Fournit une classe de base pour demander l'état de sécurité d'une action à l'objet AppDomainManager.

public ref class SecurityState abstract
public abstract class SecurityState
[System.Security.SecurityCritical]
public abstract class SecurityState
type SecurityState = class
[<System.Security.SecurityCritical>]
type SecurityState = class
Public MustInherit Class SecurityState
Héritage
SecurityState
Dérivé
Attributs

Exemples

L’exemple suivant montre comment remplacer la SecurityState classe .

[SecurityCritical]  
public enum WebcamSecurityOptions
{
    SafeAccess,  
    FullAccess  
}  
[SecurityCritical]  
public class WebcamSecurityState : SecurityState  
{  
    public WebcamSecurityState(string description, WebcamSecurityOptions options)  
    {  
        Options = options;  
        Description = description;  
    }  
    public WebcamSecurityOptions Options { get; set; }  
    public string Description { get; set; }  
    public override void EnsureState()  
    {  
        if (!IsStateAvailable())  
            throw new ApplicationException("WebcamSecurityState not available");  
    }  
}    

Remarques

Vous devez hériter de cette classe pour fournir une classe qui inclut une propriété qui spécifie l’action sensible à la sécurité à effectuer. L’objet SecurityState instancié à partir de la classe dérivée est passé à la AppDomainManager.CheckSecuritySettings méthode pour déterminer si l’hôte autorise l’exécution de cette action. L’implémentation par défaut de la CheckSecuritySettings méthode retourne falsetoujours . La méthode doit être remplacée pour détecter les actions autorisées.

Par exemple, si vous souhaitez accéder à une caméra Web dans le code de votre bibliothèque, vous devez créer un WebcamSecurityState objet et appeler la EnsureState méthode pour déterminer si l’hôte autorise l’accès à la caméra Web, comme illustré dans l’exemple suivant. (Vous trouverez le code pour WebcamSecurityState dans la section « Exemple ».

var securityState = new WebcamSecurityState("Safe access to Webcam", WebcamSecurityOptions.SafeAccess);  
try  
{  
    securityState.EnsureState();  
    // Allocate memory.  
}  
catch (ApplicationException e)  
{  
    // Handle any exception that is thrown.  
    System.Diagnostics.Debug.WriteLine(e.Message);  
}  

Pour traiter l’appel AppDomainManager , le doit être pris en compte WebcamSecurityState via un remplacement de la AppDomainManager.CheckSecuritySettings méthode, comme illustré dans l’exemple suivant.

[SecurityCritical]  
public override bool CheckSecuritySettings(System.Security.SecurityState securityState)  
{  
    switch (securityState.ToString())  
    {  
        case "WebcamSecurityState":  
        {  
            if ((securityState as WebcamSecurityState).Options == WebcamSecurityOptions.SafeAccess)  
                return PromptUser((securityState as WebcamSecurityState).Description);  
            return false;  
        }  
    }  
    return false;  
}  
private bool PromptUser(string text)  
{  
    // Replace the OpenFileDialog with a custom user prompt.  
    OpenFileDialog o = new OpenFileDialog();  
    o.Title = text;  
    if (o.ShowDialog() == DialogResult.OK)  
        return true;  
    else  
        return false;  
}   

Constructeurs

SecurityState()

Initialise une nouvelle instance de la classe SecurityState.

Méthodes

EnsureState()

En cas de substitution dans une classe dérivée, garantit que l'état représenté par SecurityState est disponible sur l'hôte.

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
IsStateAvailable()

Obtient une valeur qui indique si l'état pour cette implémentation de la classe SecurityState est disponible sur l'hôte actuel.

MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

S’applique à