SecurityState Klass

Definition

Tillhandahåller en basklass för att begära säkerhetsstatus för en åtgärd från objektet 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
Arv
SecurityState
Härledda
Attribut

Exempel

I följande exempel visas hur du åsidosätter SecurityState klassen.

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

Kommentarer

Du måste ärva från den här klassen för att tillhandahålla en klass som innehåller en egenskap som anger den säkerhetskänsliga åtgärd som ska utföras. Objektet SecurityState som instansieras från den härledda klassen skickas till AppDomainManager.CheckSecuritySettings metoden för att avgöra om värden tillåter att åtgärden utförs. Standardimplementeringen av CheckSecuritySettings metoden returnerar falsealltid . Metoden måste åsidosättas för att identifiera de åtgärder som tillåts.

Om du till exempel vill komma åt en webbkamera i bibliotekskoden skapar du ett WebcamSecurityState objekt och anropar EnsureState metoden för att avgöra om värden tillåter åtkomst till webbkameran, som du ser i följande exempel. (Du hittar koden för WebcamSecurityState i avsnittet Exempel.)

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

För att bearbeta anropet AppDomainManager måste göras medveten om WebcamSecurityState genom en åsidosättning av AppDomainManager.CheckSecuritySettings metoden, som visas i följande exempel.

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

Konstruktorer

Name Description
SecurityState()

Initierar en ny instans av SecurityState klassen.

Metoder

Name Description
EnsureState()

När det åsidosätts i en härledd klass ser du till att det tillstånd som representeras av SecurityState är tillgängligt på värden.

Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
IsStateAvailable()

Hämtar ett värde som anger om tillståndet för den här implementeringen av SecurityState klassen är tillgängligt på den aktuella värden.

MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)

Gäller för