Поделиться через


SecurityState Класс

Определение

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

Примеры

В следующем примере показано, как переопределить 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");  
    }  
}    

Комментарии

Необходимо наследовать от этого класса, чтобы предоставить класс, включающий свойство, указывающее выполняемое действие с учетом безопасности. Объект SecurityState , экземпляр которого создается из производного класса, передается методу AppDomainManager.CheckSecuritySettings , чтобы определить, допускает ли узел это действие. Реализация CheckSecuritySettings метода по умолчанию всегда возвращает false. Метод должен быть переопределен для обнаружения разрешенных действий.

Например, если вы хотите получить доступ к веб-камере в коде библиотеки, создайте WebcamSecurityState объект и вызовите EnsureState метод , чтобы определить, разрешает ли узел доступ к веб-камере, как показано в следующем примере. (Код для WebcamSecurityState можно найти в разделе "Пример".)

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 метода , как показано в следующем примере.

[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.

Методы

EnsureState()

При переопределении в производном классе обеспечивает доступность на узле состояния, представленного объектом SecurityState.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

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

Служит хэш-функцией по умолчанию.

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

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

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

Получает значение, показывающее, доступно ли состояние данной реализации класса SecurityState на текущем узле.

MemberwiseClone()

Создает неполную копию текущего объекта Object.

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

Возвращает строку, представляющую текущий объект.

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

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