다음을 통해 공유


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 을 처리하려면 다음 예제와 같이 메서드 재정의를 AppDomainManager.CheckSecuritySettings 통해 를 인식 WebcamSecurityState 해야 합니다.

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

적용 대상