2

此应用程序使用 msado15.dll、msvcr100.dll 和许多 dll。

我发现应用程序没有使用 ProcessExplorer 和 DependencyWalker 在当前目录中加载 msado15.dll 和 msvcr100.dll 文件。

相反,此应用程序从 winsxs 文件夹或不同的 Windows 系统目录加载 dll。

我想阻止它在“非当前目录”中加载 dll,即使它在没有我复制的 dll 的情况下也能正常工作。

我怎样才能解决这个问题?任何帮助,将不胜感激。

提前致谢!

4

2 回答 2

4

我做了一些研究,实际上很容易。根据这篇文章,您所要做的就是创建一个名为(YourAppName).local. 这将告诉 Windows 在 exe 文件夹中查找,而不是使用共享组件。

于 2012-08-30T02:50:56.603 回答
0

将这些 DLL(msado15.dll、msvcr100.dll)的副本放在包含您的 exe 的目录中。Loader 将首先尝试从包含您的 exe 的目录中加载 DLL。

以下是 Windows 加载程序搜索 DLL 的顺序:[参考:Windows via C-C++ by Jeffrey Richter]

  1. 包含可执行文件的目录
  2. GetWindowsDirectory 返回的 Windows 系统目录
  3. 16 位系统目录——即 Windows 目录下的 System 子文件夹
  4. GetSystemDirectory 返回的 Windows 目录
  5. 进程的当前目录
  6. PATH 环境变量中列出的目录
于 2012-08-31T12:08:08.287 回答