SecurityState Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Fornisce una classe base per richiedere lo stato di sicurezza di un'azione dall'oggetto 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
- Ereditarietà
-
SecurityState
- Derivato
- Attributi
Esempio
Nell'esempio seguente viene illustrato come eseguire l'override della 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");
}
}
Commenti
È necessario ereditare da questa classe per fornire una classe che include una proprietà che specifica l'azione sensibile alla sicurezza da eseguire. L'oggetto SecurityState di cui viene creata un'istanza dalla classe derivata viene passato al AppDomainManager.CheckSecuritySettings metodo per determinare se l'host consente l'esecuzione di tale azione. L'implementazione predefinita del CheckSecuritySettings metodo restituisce false
sempre . Il metodo deve essere sottoposto a override per rilevare le azioni consentite.
Ad esempio, se si vuole accedere a una fotocamera Web nel codice della libreria, creare un WebcamSecurityState
oggetto e chiamare il EnsureState metodo per determinare se l'host consente l'accesso alla fotocamera Web, come illustrato nell'esempio seguente. È possibile trovare il codice per WebcamSecurityState
nella sezione "Esempio".
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);
}
Per elaborare la chiamata, AppDomainManager è necessario tenere presente WebcamSecurityState
tramite un override del AppDomainManager.CheckSecuritySettings metodo , come illustrato nell'esempio seguente.
[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;
}
Costruttori
SecurityState() |
Inizializza una nuova istanza della classe SecurityState. |
Metodi
EnsureState() |
Quando è sottoposto a override in una classe derivata, assicura che lo stato rappresentato da SecurityState sia disponibile nell'host. |
Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
GetType() |
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
IsStateAvailable() |
Ottiene un valore che indica se lo stato di questa implementazione della classe SecurityState è disponibile nell'host corrente. |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |