SecurityState Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Fornece uma classe base para solicitar o estado de segurança de uma ação ao 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 seguinte mostra como sobrescrever 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");
}
}
Observações
Deve herdar desta classe para fornecer uma classe que inclua uma propriedade que especifique a ação sensível à segurança a realizar. O SecurityState objeto que é instanciado a partir da classe derivada é passado ao AppDomainManager.CheckSecuritySettings método para determinar se o host permite que essa ação seja realizada. A implementação padrão do CheckSecuritySettings método devolve falsesempre . O método deve ser ultrapassado para detetar as ações permitidas.
Por exemplo, se quiser aceder a uma câmara Web no código da sua biblioteca, criaria um WebcamSecurityState objeto e chamaria o EnsureState método para determinar se o anfitrião permite o acesso à câmara Web, como mostrado no exemplo seguinte. (Pode encontrar o código na WebcamSecurityState secçã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 através WebcamSecurityState de uma sobreposição do AppDomainManager.CheckSecuritySettings método, como mostrado no exemplo seguinte.
[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
| Name | Description |
|---|---|
| SecurityState() |
Inicializa uma nova instância da SecurityState classe. |
Métodos
| Name | Description |
|---|---|
| EnsureState() |
Quando sobreposto numa classe derivada, assegura que o estado representado por SecurityState está disponível no hospedeiro. |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetHashCode() |
Serve como função de 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 desta implementação da SecurityState classe está disponível no host atual. |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |