SecurityState Classe

Definição

Fornece uma classe base para solicitar o status de segurança de uma ação do AppDomainManager objeto.

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 em seu código de biblioteca, criará um WebcamSecurityState objeto e chamará o EnsureState método para determinar se o host permite acesso à câmera da Web, conforme mostrado no exemplo a seguir. (Você pode encontrar o código na WebcamSecurityState 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, é AppDomainManager necessário ter conhecimento 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

Nome Description
SecurityState()

Inicializa uma nova instância da classe SecurityState.

Métodos

Nome Description
EnsureState()

Quando substituído em uma classe derivada, garante que o estado representado pelo SecurityState host 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 hash predefinida.

(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 SecurityState classe está disponível no host atual.

MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a