SecurityState 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
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) |
적용 대상
.NET