次の方法で共有


<legacyImpersonationPolicy> 要素

現在のスレッドの実行コンテキストのフロー設定に関係なく、Windows ID が非同期ポイント間をフローしないように指定します。

<legacyImpersonationPolicy  
   enabled="true|false"/>

属性および要素

以降のセクションでは、属性、子要素、および親要素について説明します。

属性

属性

説明

enabled

必須の属性です。

現在のスレッドの ExecutionContext フロー設定に関係なく、WindowsIdentity が非同期ポイント間をフローしないように指定します。

enabled 属性

説明

false

現在のスレッドの ExecutionContext フロー設定に基づいて、WindowsIdentity が非同期ポイント間をフローします。 これは、既定の設定です。

true

現在のスレッドの ExecutionContext フロー設定に関係なく、WindowsIdentity は非同期ポイント間をフローしません。

子要素

なし。

親要素

要素

説明

configuration

共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。

runtime

アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。

解説

.NET Framework Version 1.0 および 1.1 では、WindowsIdentity はユーザー定義の非同期ポイント間をフローしません。 一方、.NET Framework Version 2.0 には、現在の実行スレッドに関する情報を格納し、これをアプリケーション ドメイン内の非同期ポイント間でフローさせる ExecutionContext オブジェクトがあります。 WindowsIdentity も、非同期ポイント間をフローする情報の一部としてフローします。つまり、偽装コンテキストが終了した場合でもフローします。 この要素は、WindowsIdentity が非同期ポイント間をフローしないように指定するために使用されます。

メモメモ

共通言語ランタイム (CLR: Common Language Runtime) は、マネージ コードのみを使用して実行される偽装操作を認識し、アンマネージ コードに対するプラットフォーム呼び出しや Win32 関数に対する直接呼び出しなどを通じてマネージ コードの外部で実行される偽装は認識しません。alwaysFlowImpersonationPolicy 要素が true に設定 (<alwaysFlowImpersonationPolicy enabled="true"/>) されていない場合は、マネージ WindowsIdentity オブジェクトのみが非同期ポイント間をフローできます。alwaysFlowImpersonationPolicy を true に設定すると、偽装の実行方法に関係なく、Windows ID が常に非同期ポイント間をフローするように指定されます。非同期ポイント間のアンマネージ偽装のフローの詳細については、「<alwaysFlowImpersonationPolicy> 要素」を参照してください。

この要素は、アプリケーション構成ファイルでのみ使用できます。

この既定の動作は、さらに次の 2 つの方法で変更できます。

  1. スレッドごとにマネージ コードを使用する。

    ExecutionContext.SuppressFlow メソッド、SecurityContext.SuppressFlowWindowsIdentity メソッド、または SecurityContext.SuppressFlow メソッドを使用して ExecutionContext 設定と SecurityContext 設定を変更すると、スレッドごとにフローを止めることができます。

  2. 共通言語ランタイム (CLR: Common Language Runtime) を読み込むアンマネージ ホスト インターフェイスの呼び出しを使用する。

    単純なマネージ実行可能ファイルの代わりに、アンマネージ ホスト インターフェイスを使用して CLR を読み込むと、CorBindToRuntimeEx 関数 関数の呼び出しで特別なフラグを指定できます。 プロセス全体の互換モードを有効にするには、CorBindToRuntimeEx 関数 の flags パラメーターを STARTUP_LEGACY_IMPERSONATION に設定します。

使用例

非同期ポイント間で Windows ID をフローしないレガシ動作を指定する方法を次の例に示します。

<configuration>
   <runtime>
      <legacyImpersonationPolicy enabled="true"/>
   </runtime>
</configuration>

参照

参照

ランタイム設定スキーマ

その他の技術情報

.NET Framework の構成ファイル スキーマ