DLLの読み込み。DLLを探す検索パスの順序を変更する。(probing path によるサブディレクトリ、DLL/COMリダイレクション、Registration-Free ActiveX)

DLLの読み込み場所を、既定の場所以外から読み込むには以下の方法がある。

・サブディレクトリからDLLを読み込む(.Netのみ)
アプリケーション構成ファイル(application.exe.config)を使用してプロービングパスの設定を行う。以下の設定を行うとアプリケーションのサブディレクトリ,bin,bin2/subbin/bin3に対してDLLを検索するようになる。









・DLL/COM リダイレクション、
すべてのDLLをカレントディレクトリから読み込むよう強制する。DLL/COM リダイレクションファイル(applicatino.exe.localファイル)を作成することで、すべての設定を無視してカレントディレクトリからDLLを読み込むようになる。Win32,ActiveX,.Netすべてで有効な方法。

強制力が強く全DLLが対象となってしまうので、採用するときは要検討。他の方法が使えない場合に。これは、例えばDLLImportやLoadFromなど動的に指定したフォルダのDLLを読み込む場合や、ActiveXのようにレジストリ登録したDLLも、その場所を無視してカレントディレクトリから読み込むようになる。(カレントディレクトリに存在しない場合は、通常のDLL検索の順序で処理される。)

notepad.exeの場合、notepad.exe.localファイルを同一フォルダに配置する。ファイルの中身は空で問題ない。

・Registration-Free ActiveX
WindowsXPから採用されたSxS技術の一つ。レジストリ登録無しにActiveXを使用できる。
application.exe.manifestファイルにActiveXについての記載をいれることで対応できる。
manifestファイルはDLLの配布元から手に入れるのが筋だが、手に入らない場合は、VisualStudio2005を使って作成する。
参照設定のプロパティで「分離」を設定して、manifestがビルドすると作成される。