如何在当前目录中强制使用dll文件

How to impose dll files in the current directory?

本文关键字:dll 文件 当前目录      更新时间:2023-10-16

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

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

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

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

我该怎么解决这个问题?如有任何帮助,我们将不胜感激。

提前感谢!

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

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

以下是windows加载程序搜索DLL的顺序:[参考:Windows通过C-C++由Jeffrey Richter]

  1. 包含可执行文件的目录
  2. GetWindowsDirectory返回的Windows系统目录
  3. 16位系统目录,即Windows目录下的system子文件夹
  4. GetSystemDirectory返回的Windows目录
  5. 进程的当前目录
  6. PATH环境变量中列出的目录