Compartilhar via


SecurityState Classe

Definição

Fornece uma classe base para solicitar o status de segurança de uma ação do 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
Herança
SecurityState
Derivado
Atributos

Exemplos

O exemplo a seguir mostra como substituir a 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");  
    }  
}    

Comentários

Você deve herdar dessa classe para fornecer uma classe que inclua uma propriedade que especifica a ação sensível à segurança a ser executada. O SecurityState objeto que é instanciado da classe derivada é passado para o AppDomainManager.CheckSecuritySettings método para determinar se o host permite que essa ação seja executada. A implementação padrão do CheckSecuritySettings método sempre retorna false. O método deve ser substituído para detectar as ações permitidas.

Por exemplo, se você quiser acessar uma câmera da Web no código da biblioteca, crie um WebcamSecurityState objeto e chame o EnsureState método para determinar se o host permite o acesso à câmera da Web, conforme mostrado no exemplo a seguir. (Você pode encontrar o código para WebcamSecurityState na seção "Exemplo".)

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 processar a chamada, o AppDomainManager deve ser informado por meio de WebcamSecurityState uma substituição do AppDomainManager.CheckSecuritySettings método , conforme mostrado no exemplo a seguir.

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

Construtores

SecurityState()

Inicializa uma nova instância da classe SecurityState.

Métodos

EnsureState()

Quando substituído em uma classe derivada, garante que o estado representado por SecurityState esteja disponível no host.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IsStateAvailable()

Obtém um valor que indica se o estado para essa implementação da classe SecurityState está disponível no host atual.

MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a