DynamicMethod.IsSecurityCritical プロパティ

定義

現在の動的メソッドがセキュリティ クリティカルまたはセキュリティ セーフ クリティカルであり、重要な操作を実行できるかどうかを示す値を取得します。

public:
 virtual property bool IsSecurityCritical { bool get(); };
public override bool IsSecurityCritical { get; }
member this.IsSecurityCritical : bool
Public Overrides ReadOnly Property IsSecurityCritical As Boolean

プロパティ値

Boolean

現在の動的メソッドがセキュリティ クリティカルまたはセキュリティ セーフ クリティカルである場合は true。現在の動的メソッドが透過的な場合は false

例外

動的メソッドにメソッド本体がありません。

注釈

IsSecuritySafeCriticalプロパティはIsSecurityCriticalIsSecurityTransparent、共通言語ランタイム (CLR) によって決定される動的メソッドの透過性レベルを報告します。 これらのプロパティの組み合わせを次の表に示します。

セキュリティ レベル IsSecurityCritical IsSecuritySafeCritical IsSecurityTransparent
重大 true false false
重要セーフ true true false
透明 false false true

これらのプロパティを使用する方が、アセンブリとその型のセキュリティの注釈を調べたり、現在の信頼レベルを確認したり、ランタイムの規則を複製したりするより、はるかに簡単です。

動的メソッドの透明度は、関連付けられているモジュールによって異なります。 動的メソッドがモジュールではなく型に関連付けられている場合、その透過性は、その型を含むモジュールによって異なります。 動的メソッドにはセキュリティ注釈がないため、関連付けられているモジュールの既定の透過性が割り当てられます。

  • 匿名でホストされる動的メソッドは、それらを含むシステム提供のモジュールが透過的であるため、常に透過的です。

  • 信頼されたアセンブリ (つまり、グローバル アセンブリ キャッシュにインストールされている厳密な名前付きアセンブリ) に関連付けられている動的メソッドの透過性について、次の表で説明します。

    アセンブリ注釈 レベル 1 の透明度 レベル 2 の透明度
    完全に透明 透明 透明
    完全に重要 重大 重大
    混合透明度 透明 透明
    セキュリティに依存しない セーフ クリティカル 重大

    たとえば、動的メソッドを、レベル 2 の混合透明度を持つmscorlib.dll内の型に関連付ける場合、動的メソッドは透過的であり、重要なコードを実行できません。 透明性レベルの詳細については、「セキュリティ透過的コード、レベル 1、セキュリティ透過的コード、レベル 2」を参照してください。

    注意

    System.dllなど、セキュリティに依存しない信頼されたレベル 1 アセンブリ内のモジュールに動的メソッドを関連付けることは、信頼の昇格を許可しません。 動的メソッドを呼び出すコードの許可セットにSystem.dllの許可セット (つまり、完全信頼) SecurityException が含まれていない場合は、動的メソッドが呼び出されたときにスローされます。

  • 部分的に信頼されたアセンブリに関連付けられている動的メソッドの透過性は、アセンブリの読み込み方法によって異なります。 アセンブリが部分信頼 (たとえば、サンドボックス アプリケーション ドメインに) 読み込まれる場合、ランタイムはアセンブリのセキュリティ注釈を無視します。 アセンブリとそのすべての型とメンバー (動的メソッドを含む) は、透過的として扱われます。 ランタイムは、部分信頼アセンブリが完全信頼で読み込まれた場合 (デスクトップ アプリケーションの既定のアプリケーション ドメインなど) にのみ、セキュリティ注釈に注意を払います。 その場合、ランタイムは、アセンブリの注釈に従って、動的メソッドにメソッドの既定の透過性を割り当てます。

リフレクション出力と透明度の詳細については、「Reflection Emit のセキュリティの問題」を参照してください。 透明性の詳細については、「 セキュリティの変更」を参照してください。

適用対象

こちらもご覧ください