次の方法で共有


Windows での DLL/COM リダイレクト

DLL/COM リダイレクトは、Windows XP の企業管理者が採用するアプリケーション分離戦略です。

**Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP SP2: ** マニフェストと サイド バイ サイド アセンブリを使用する分離されたアプリケーションは、更新とサービス が容易になるため、DLL/COM リダイレクト戦略の使用はお勧めしません。 マニフェストが存在する場合、.local ファイルの存在は無視されます。 .local ファイルを使用する DLL/COM リダイレクト戦略は、アプリケーションにマニフェストがない場合に機能します。

DLL/COM リダイレクトは、アプリケーションをコンポーネントのローカル バージョンにバインドします。 ローカル コンポーネントのファイルは、アプリケーションに対してプライベートな場所にあるシステムのバージョンのコンポーネントとは別に保持できます。 システムのバージョンのコンポーネントはグローバルに登録され、それにバインドする他のアプリケーションで使用できます。 コンポーネントのローカル バージョンは、アプリケーションを排他的に使用するために予約されています。 必要に応じて、アプリケーションで使用されるコンポーネント ファイルを、システムのコンポーネント ファイルと同時にメモリに読み込むことができます。

DLL/COM リダイレクトは、特殊なファイルとローカル コンポーネント ファイルのコピーをアプリケーションの実行可能ファイルと同じディレクトリにインストールすることによってアクティブ化されます。 特殊なファイルは、アプリケーション実行可能ファイルのファイル名にちなんだ空のファイルで、.local が追加されます。 たとえば、Myapp という名前のアプリケーションに対して DLL/COM リダイレクトをアクティブにするには、コンポーネントのローカル バージョンと .local という名前 Myapp.exe空のファイル Myapp.exe含むフォルダーにコピーする必要があります。 これにより、アプリケーションは、コンポーネントのグローバル共有バージョンではなく、コンポーネントのローカル バージョンにバインドされます。

アプリケーションが DLL や .ocx ファイルなどのコンポーネント ファイルを読み込むとき、Windows はまず、アプリケーションの .local ファイルと実行可能ファイルがインストールされているフォルダー内でそのファイルを検索します。 見つかった場合、アプリケーションは、アプリケーションまたはレジストリで定義されているディレクトリ検索パスに関係なく、そのコンポーネント ファイルを使用します。 見つからない場合は、定義された検索パス内のコンポーネント ファイルが使用されます。

DLL/COM リダイレクトを使用してアプリケーションをインストールするには、インストール ユーティリティで次の操作を行う必要があります。

  • 空の .local ファイルは、アプリケーションの実行可能ファイルと同じフォルダーにコピーする必要があります。
  • アプリケーションで使用されるすべてのコンポーネント、DLL、および .ocx ファイルは、アプリケーションの実行可能ファイルと同じフォルダーにコピーする必要があります。
  • 分離 COM コンポーネントは、異なるバージョンのアセンブリが同時にメモリに読み込まれるときに互いに競合しないように、Windows に登録する必要があります。 登録プロセスでは、コンポーネントの実装がバージョン間で変更される可能性がある一方で、CLSID、ProgID、タイプ ライブラリ、スレッド モデルなどの特定の COM メタデータを変更できない必要があります。
  • アプリケーションが Windows インストーラーを使用してインストールされている場合は、LockPermissions テーブルを使用してアプリケーション ディレクトリをセキュリティで保護できます。 通常、システムには読み取り、書き込み、実行のアクセス権が付与されます。他のすべてのプロセスには、実行アクセスと読み取りアクセスのみが付与されます。