SecurityState Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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) |