次の方法で共有


<legacyImpersonationPolicy> 要素

現在のスレッドの実行コンテキストのフロー設定に関係なく、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 つの方法で変更できます。

  1. スレッド単位のマネージド コード。

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

  2. 共通言語ランタイム (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>  

関連項目