SecurityState Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
SecurityState() |
Inicializuje novou instanci SecurityState třídy . |
Metody
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) |