SecurityState Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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) |