Windows XP でのアプリケーションごとの構成

Windows XP では、アプリケーションごとの構成によって、既定の 構成発行元の構成 の両方がアプリケーションごとにオーバーライドされます。 これにより、特定のアプリケーションの依存が、サイド バイ サイド アセンブリの 1 つのバージョンから、指定した別のバージョンのアセンブリにリダイレクトされます。

Note

Windows Server 2003 以降では、アプリケーション構成ファイルpublisherPolicyapply="no" が指定され、アプリケーション互換性データベースに対応するエントリが存在する場合にのみ、アプリケーションごとの構成によってパブリッシャー構成がオーバーライドされます。 アプリケーションごとの構成では、 常に既定の構成がオーバーライドされます。 詳細については、「 アプリケーションごとの構成」を参照してください。

 

特定のアプリケーションの正しい操作で、通常は既定または発行元の構成として指定されているバージョンとは異なるアセンブリ バージョンが必要な場合、アプリケーションごとの構成が必要になることがあります。 たとえば、パブリッシャーによるアセンブリ バージョンのグローバル更新によってアセンブリが修正される可能性がありますが、この特定のアプリケーションは中断されます。 この場合、アプリケーションごとの構成を使用して、アプリケーションが以前のアセンブリ バージョンで引き続き実行されるようにすることができます。 もう 1 つの例として、アセンブリ更新プログラムを含む Service Pack インストールでは 、パブリッシャー構成 を使用して、システム上のすべてのアプリケーションとアセンブリの依存関係をバージョン 1.0.0.0 から 1.0.1.0 にリダイレクトできます。 バージョン 1.0.0.0 を正しく動作させる必要があるアプリケーションがある場合は、アプリケーションごとの構成を使用してバージョン 1.0.0.0 にリダイレクトできます。

アプリケーション管理者は、アプリケーション構成ファイルを作成してインストールすることで、 アプリケーションごとの構成を実装できます。 これにより、特定のアプリケーションがサイド バイ サイド アセンブリの 1 つのバージョンへの依存から、別のバージョンへの依存にリダイレクトされます。 アプリケーション構成 ファイルは、 発行元の構成ファイル と、 アプリケーション マニフェストアセンブリ マニフェストで指定された既定の構成をオーバーライドできます。 アプリケーション構成ファイルには、 CreateProcess が呼び出されたときにローダーによって使用される情報が含まれます。

アプリケーション マニフェストとパブリッシャー構成の両方をオーバーライドするようにアプリケーションを構成するには、開発者がアプリケーション構成ファイルを作成する必要があります。 その後、アプリケーション構成ファイルがデプロイされ、アプリケーションの実行可能ファイルと同じフォルダーにインストールされます。 ファイル スキーマの一覧については、「 アプリケーション構成ファイル スキーマ」を参照してください。

アプリケーションがアプリケーションごとの構成を使用している場合、アセンブリの発行元が発行元の構成ファイルとして発行する可能性がある重要なセキュリティ修正プログラムやバグ修正は受け取らない点に注意してください。 したがって、アプリケーションごとの構成を使用するアプリケーションは、これらの修正プログラムを含む新しいアセンブリがシステムに適用された後でも、セキュリティで保護されていないままであるか、正しく動作し続ける可能性があります。 このため、アプリケーション開発者はアプリケーションごとに構成されたアプリケーションを出荷しないでください。 アプリケーションごとの構成は、発行元の構成によってアプリケーションが破損した場合にのみ、企業管理者が一時的な修正として使用する必要があります。 この場合、永続的な解決策は、アセンブリの開発者とアプリケーションの開発者が連携して、パブリッシャー構成を持つアセンブリが完全に下位互換性があることを確認する必要があるということです。

アプリケーション構成ファイルの例を次に示します。 詳細については、「 アプリケーション構成ファイル」を参照してください。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<configuration>
  <windows>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <assemblyIdentity 
          name="Microsoft.Windows.mysampleApp" 
          processorArchitecture="x86" 
          version="1.0.0.0" type="win32"/>
        <dependentAssembly>
          <assemblyIdentity type="win32" 
              name="Microsoft.Windows.SampleAssembly" 
              processorArchitecture="x86" 
              publicKeyToken="0000000000000000"/>
          <bindingRedirect 
              oldVersion="2.0.0.0" 
              newVersion="2.0.1.0"/>
        </dependentAssembly>
    </assemblyBinding>
   </windows>
</configuration>