Share via


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。 許可されているアクションを検出するには、 メソッドをオーバーライドする必要があります。

たとえば、ライブラリ コードで Web カメラにアクセスする場合は、 オブジェクトを作成 WebcamSecurityState し、 メソッドを EnsureState 呼び出して、次の例に示すように、ホストが Web カメラへのアクセスを許可するかどうかを判断します。 (のコード 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)

適用対象