Sdílet prostřednictvím


SecurityState Třída

Definice

Poskytuje základní třídu pro vyžádání stavu zabezpečení akce z objektu 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
Dědičnost
SecurityState
Odvozené
Atributy

Příklady

Následující příklad ukazuje, jak přepsat SecurityState třídu .

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

Poznámky

Je nutné dědit z této třídy poskytnout třídu, která obsahuje vlastnost, která určuje akci citlivé na zabezpečení, která má být provedena. Objekt SecurityState , který je vytvořena z odvozené třídy, je předán AppDomainManager.CheckSecuritySettings metodě k určení, zda hostitel umožňuje provedení této akce. Výchozí implementace CheckSecuritySettings metody vždy vrátí false. Metoda se musí přepsat, aby se zjistily akce, které jsou povolené.

Pokud například chcete získat přístup k webové kameře v kódu knihovny, vytvoříte WebcamSecurityState objekt a zavoláte metodu EnsureState k určení, zda hostitel umožňuje přístup k webové kameře, jak je znázorněno v následujícím příkladu. (Kód pro WebcamSecurityState najdete v části "Příklad".)

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

Pro zpracování volání AppDomainManager musí být informován WebcamSecurityState prostřednictvím přepsání AppDomainManager.CheckSecuritySettings metody, jak je znázorněno v následujícím příkladu.

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

Konstruktory

Name Description
SecurityState()

Inicializuje novou instanci SecurityState třídy .

Metody

Name Description
EnsureState()

Při přepsání v odvozené třídě zajišťuje, že stav reprezentovaný parametrem SecurityState je k dispozici na hostiteli.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
IsStateAvailable()

Získá hodnotu, která označuje, zda stav pro tuto implementaci SecurityState třídy je k dispozici na aktuálním hostiteli.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Platí pro