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

时间:2012-08-30 02:35:53

标签: c++ windows dll mfc

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

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

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

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

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

提前致谢!

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

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

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

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