<legacyImpersonationPolicy> 要素
Windows ID が、現在のスレッドの実行コンテキストのフロー設定に関係なく、非同期ポイント間でフローしないことを指定します。
configuration
runtime
<legacyImpersonationPolicy>
構文
<legacyImpersonationPolicy
enabled="true|false"/>
属性および要素
以降のセクションでは、属性、子要素、および親要素について説明します。
属性
属性 | 説明 |
---|---|
enabled |
必須の属性です。 WindowsIdentity が、現在のスレッドの ExecutionContext フロー設定に関係なく、非同期ポイント間でフローしないことを指定します。 |
enabled 属性
[値] | 説明 |
---|---|
false |
WindowsIdentity は、現在のスレッドの ExecutionContext フロー設定に応じて、非同期ポイント間でフローします。 既定値です。 |
true |
WindowsIdentity は、現在のスレッドの ExecutionContext フロー設定に関係なく、非同期ポイント間でフローしません。 |
子要素
なし。
親要素
要素 | 説明 |
---|---|
configuration |
共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。 |
runtime |
アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。 |
解説
.NET Framework Version 1.0 および 1.1 では、WindowsIdentity はユーザー定義の非同期ポイント間をフローしません。 .NET Framework バージョン 2.0 以降では、現在実行中のスレッドに関する情報を格納する ExecutionContext オブジェクトがあり、アプリケーション ドメイン内の非同期ポイント間をフローします。 WindowsIdentity はこの実行コンテキストに含まれているため、非同期ポイント間でもフローします。つまり、権限借用コンテキストが存在する場合は、同様にフローが行われます。
.NET Framework 2.0 以降では、<legacyImpersonationPolicy>
要素を使用して、WindowsIdentity が非同期ポイント間でフローしないように指定できます。
Note
共通言語ランタイム (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>
関連項目
.NET