2

このアプリケーションは、msado15.dll、msvcr100.dll、および多くの dll を使用します。

ProcessExplorer および DependencyWalker を使用して、アプリケーションが現在のディレクトリに msado15.dll および msvcr100.dll ファイルをロードしないことがわかりました。

むしろ、このアプリケーションは、winsxs フォルダーまたは別の Windows システム ディレクトリから dll をロードします。

コピーしたdllがなくても正常に動作する場合でも、「現在のディレクトリではない」にdllをロードしないようにしたいと思います。

どうすればこれを修正できますか? どんな助けでも大歓迎です。

前もって感謝します!

4

2 に答える 2

4

私はいくつかの研究を行いましたが、実際にはかなり簡単です。この記事によると、必要な作業は、(YourAppName).local. これにより、共有コンポーネントを使用する代わりに、exe フォルダーを検索するように Windows に指示されます。

于 2012-08-30T02:50:56.603 に答える
0

これらの DLL (msado15.dll、msvcr100.dll) のコピーを、exe を含むディレクトリに配置します。ローダーはまず、exe を含むディレクトリから DLL をロードしようとします。

以下は、Windows ローダーが DLL を検索する順序です: [参照: Jeffrey Richter による C-C++ 経由の Windows]

  1. 実行ファイルを含むディレクトリ
  2. GetWindowsDirectory によって返される Windows システム ディレクトリ
  3. 16 ビット システム ディレクトリ、つまり、Windows ディレクトリの下の System サブフォルダー
  4. GetSystemDirectory によって返される Windows ディレクトリ
  5. プロセスの現在のディレクトリ
  6. PATH 環境変数にリストされているディレクトリー
于 2012-08-31T12:08:08.287 に答える