SecurityState Класс

Определение

Предоставляет базовый класс для запроса состояния безопасности действия из объекта AppDomainManager.Provides a base class for requesting the security status of an action from the AppDomainManager object.

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
Наследование
SecurityState
Производный
Атрибуты

Примеры

В следующем примере показано, как переопределить SecurityState класс.The following example shows how to override the SecurityState class.

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

Комментарии

Необходимо наследовать от этого класса, чтобы предоставить класс, включающий в себя свойство, которое указывает действие, зависящее от безопасности, которое необходимо выполнить.You must inherit from this class to provide a class that includes a property that specifies the security-sensitive action to be performed. SecurityStateОбъект, созданный из производного класса, передается в метод, AppDomainManager.CheckSecuritySettings чтобы определить, разрешает ли узел выполнение этого действия.The SecurityState object that is instantiated from the derived class is passed to the AppDomainManager.CheckSecuritySettings method to determine whether the host allows that action to be performed. Реализация метода по умолчанию CheckSecuritySettings всегда возвращает значение false .The default implementation of the CheckSecuritySettings method always returns false. Метод должен быть переопределен для обнаружения разрешенных действий.The method must be overridden to detect the actions that are allowed.

Например, если вы хотите получить доступ к веб-камере в коде библиотеки, создайте WebcamSecurityState объект и вызовите EnsureState метод, чтобы определить, допускает ли узел доступ к веб-камере, как показано в следующем примере.For example, if you want to access a Web camera in your library code, you would create a WebcamSecurityState object and call the EnsureState method to determine whether the host allows Web camera access, as shown in the following example. (Код для можно найти WebcamSecurityState в разделе "пример".)(You can find the code for WebcamSecurityState in the "Example" section.)

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

Для обработки вызова AppDomainManager необходимо принять во внимание WebcamSecurityState Переопределение AppDomainManager.CheckSecuritySettings метода, как показано в следующем примере.To process the call the AppDomainManager must be made aware of WebcamSecurityState through an override of the AppDomainManager.CheckSecuritySettings method, as shown in the following example.

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

Конструкторы

SecurityState()

Инициализирует новый экземпляр класса SecurityState.Initializes a new instance of the SecurityState class.

Методы

EnsureState()

При переопределении в производном классе обеспечивает доступность на узле состояния, представленного объектом SecurityState.When overridden in a derived class, ensures that the state that is represented by SecurityState is available on the host.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
IsStateAvailable()

Получает значение, показывающее, доступно ли состояние данной реализации класса SecurityState на текущем узле.Gets a value that indicates whether the state for this implementation of the SecurityState class is available on the current host.

MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Унаследовано от Object)

Применяется к