Comparteix a través de


SecurityState Clase

Definición

Proporciona una clase base para solicitar el estado de seguridad de una acción del objeto 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
Herencia
SecurityState
Derivado
Atributos

Ejemplos

En el ejemplo siguiente se muestra cómo invalidar la SecurityState clase .

[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");  
    }  
}    

Comentarios

Debe heredar de esta clase para proporcionar una clase que incluya una propiedad que especifique la acción confidencial de seguridad que se va a realizar. El SecurityState objeto al que se crea una instancia de la clase derivada se pasa al AppDomainManager.CheckSecuritySettings método para determinar si el host permite que se realice esa acción. La implementación predeterminada del CheckSecuritySettings método siempre devuelve false. El método se debe invalidar para detectar las acciones permitidas.

Por ejemplo, si desea acceder a una cámara web en el código de la biblioteca, debe crear un WebcamSecurityState objeto y llamar al EnsureState método para determinar si el host permite el acceso a la cámara web, como se muestra en el ejemplo siguiente. (Puede encontrar el código para WebcamSecurityState en la sección "Ejemplo".

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);  
}  

Para procesar la llamada AppDomainManager , se debe tener en cuenta WebcamSecurityState mediante una invalidación del AppDomainManager.CheckSecuritySettings método , como se muestra en el ejemplo siguiente.

[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;  
}   

Constructores

SecurityState()

Inicializa una nueva instancia de la clase SecurityState.

Métodos

EnsureState()

Cuando se invalida en una clase derivada, asegúrese de que el estado representado por SecurityState está disponible en el host.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
IsStateAvailable()

Obtiene un valor que indica si el estado para esta implementación de la clase SecurityState está disponible en el host actual.

MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a