SecurityState Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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) |