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)

適用対象