現在のスレッドの実行コンテキストのフロー設定に関係なく、Windows ID が非同期ポイント間でフローしないように指定します。
<構成>
ランタイム><
legacyImpersonationPolicy>を<する
構文
<legacyImpersonationPolicy
enabled="true|false"/>
属性と要素
次のセクションでは、属性、子要素、および親要素について説明します。
属性
属性 | 形容 |
---|---|
enabled |
必須の属性。 現在のスレッドの ExecutionContext フロー設定に関係なく、WindowsIdentity が非同期ポイント間でフローしないように指定します。 |
enabled 属性
価値 | 形容 |
---|---|
false |
WindowsIdentity は、現在のスレッドの ExecutionContext フロー設定に応じて、非同期ポイント間を流れます。 これが既定値です。 |
true |
WindowsIdentity は、現在のスレッドの ExecutionContext フロー設定に関係なく、非同期ポイント間を流れることはありません。 |
子要素
何一つ。
親要素
要素 | 形容 |
---|---|
configuration |
共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素。 |
runtime |
アセンブリ バインドとガベージ コレクションに関する情報が含まれています。 |
備考
.NET Framework バージョン 1.0 および 1.1 では、WindowsIdentity はユーザー定義の非同期ポイント間でフローしません。 .NET Framework バージョン 2.0 以降では、現在実行中のスレッドに関する情報を含む ExecutionContext オブジェクトがあり、アプリケーション ドメイン内の非同期ポイント間を流れます。 WindowsIdentity はこの実行コンテキストに含まれているため、非同期ポイント間もフローします。つまり、偽装コンテキストが存在する場合もフローします。
.NET Framework 2.0 以降では、<legacyImpersonationPolicy>
要素を使用して、WindowsIdentity が非同期ポイント間でフローしないように指定できます。
手記
共通言語ランタイム (CLR) は、マネージド コードのみを使用して実行される偽装操作を認識します。プラットフォームからアンマネージド コードへの呼び出しや Win32 関数への直接呼び出しなど、マネージド コードの外部で実行される偽装は認識されません。
alwaysFlowImpersonationPolicy
要素が true (<alwaysFlowImpersonationPolicy enabled="true"/>
) に設定されていない限り、非同期ポイント間でフローできるのはマネージド WindowsIdentity オブジェクトだけです。
alwaysFlowImpersonationPolicy
要素を true に設定すると、偽装の実行方法に関係なく、Windows ID が常に非同期ポイント間を流れます。 非同期ポイント間でアンマネージ偽装をフローする方法の詳細については、「alwaysFlowImpersonationPolicy> 要素 <する」を参照してください。
この既定の動作は、他の 2 つの方法で変更できます。
スレッド単位のマネージド コード。
ExecutionContext.SuppressFlow、SecurityContext.SuppressFlowWindowsIdentity、または SecurityContext.SuppressFlow メソッドを使用して、ExecutionContext と SecurityContext の設定を変更することで、スレッドごとにフローを抑制できます。
共通言語ランタイム (CLR) を読み込むアンマネージ ホスティング インターフェイスの呼び出し。
(単純なマネージド実行可能ファイルではなく) アンマネージド ホスティング インターフェイスを使用して CLR を読み込む場合は、CorBindToRuntimeEx 関数 関数の呼び出しで特別なフラグを指定できます。 プロセス全体の互換モードを有効にするには、CorBindToRuntimeEx 関数 の
flags
パラメーター STARTUP_LEGACY_IMPERSONATIONに設定します。
詳細については、alwaysFlowImpersonationPolicy> 要素 <を参照してください。
構成ファイル
.NET Framework アプリケーションでは、この要素はアプリケーション構成ファイルでのみ使用できます。
ASP.NET アプリケーションの場合、偽装フローは、<Windows フォルダー>\Microsoft.NET\Framework\vx.x.xxxx ディレクトリにある aspnet.config ファイルで構成できます。
既定で ASP.NET は、次の構成設定を使用して、aspnet.config ファイル内の偽装フローを無効にします。
<configuration>
<runtime>
<legacyImpersonationPolicy enabled="true"/>
<alwaysFlowImpersonationPolicy enabled="false"/>
</runtime>
</configuration>
ASP.NET では、代わりに偽装のフローを許可する場合は、次の構成設定を明示的に使用する必要があります。
<configuration>
<runtime>
<legacyImpersonationPolicy enabled="false"/>
<alwaysFlowImpersonationPolicy enabled="true"/>
</runtime>
</configuration>
例
次の例は、非同期ポイント間で Windows ID をフローしない従来の動作を指定する方法を示しています。
<configuration>
<runtime>
<legacyImpersonationPolicy enabled="true"/>
</runtime>
</configuration>
関連項目
- 構成ファイルを使用してアプリを構成
- ランタイム設定スキーマの
- 構成ファイル スキーマの
- alwaysFlowImpersonationPolicy> 要素 の<
.NET