Udostępnij za pośrednictwem


SecurityState Klasa

Definicja

Udostępnia klasę bazową do żądania stanu zabezpieczeń akcji z AppDomainManager obiektu .

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
Dziedziczenie
SecurityState
Pochodne
Atrybuty

Przykłady

W poniższym przykładzie pokazano, jak zastąpić klasę SecurityState .

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

Uwagi

Należy dziedziczyć z tej klasy, aby podać klasę zawierającą właściwość określającą akcję wrażliwą na zabezpieczenia do wykonania. Obiekt SecurityState , który jest tworzony z klasy pochodnej, jest przekazywany do metody w AppDomainManager.CheckSecuritySettings celu określenia, czy host umożliwia wykonanie tej akcji. Domyślna implementacja CheckSecuritySettings metody zawsze zwraca wartość false. Aby można było wykryć dozwolone akcje, należy zastąpić metodę .

Jeśli na przykład chcesz uzyskać dostęp do aparatu sieci Web w kodzie biblioteki, należy utworzyć obiekt i wywołać EnsureState metodę WebcamSecurityState , aby określić, czy host zezwala na dostęp do aparatu sieci Web, jak pokazano w poniższym przykładzie. (Kod można WebcamSecurityState znaleźć w sekcji "Przykład".

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

Aby przetworzyć wywołanie AppDomainManager , należy WebcamSecurityState pamiętać o zastąpieniu AppDomainManager.CheckSecuritySettings metody, jak pokazano w poniższym przykładzie.

[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

SecurityState()

Inicjuje nowe wystąpienie klasy SecurityState.

Metody

EnsureState()

Po zastąpieniu w klasie pochodnej zapewnia, że stan reprezentowany przez SecurityState jest dostępny na hoście.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
IsStateAvailable()

Pobiera wartość wskazującą, czy stan tej implementacji SecurityState klasy jest dostępny na bieżącym hoście.

MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy