在 Windows 中,Windows 如何通过这些文件夹查找 .dll?例如,如果我有同一个 dll 的两个版本,一个在 System 32 文件夹中,一个在系统路径中,Windows 会首先查找哪里?
答案1
Windows 首先搜索“已知 DLL”,例如 Kernel32.dll 和 User32.dll。
然后,Windows 按以下顺序搜索 DLL:
Windows 系统目录。GetSystemDirectory 函数检索此目录的路径。
Windows 目录。GetWindowsDirectory 函数检索此目录的路径。
当前进程的可执行模块所在的目录。
当前目录。
PATH 环境变量中列出的目录。
请注意,在 64 位 Windows 下,32 位进程使用 32 位 system32 目录,而不是 64 位目录。
它与 2k3 或 XP 的 sp1 之前版本略有不同。
答案2
取决于您的PATH
环境变量,但通常%windir%\System32
在之前添加%windir%
。
戴上我的开发人员的帽子:只要有可能,我就会避免在这两个文件夹中安装任何东西,特别是对于并行汇编支持的较新的操作系统版本(例如 XP/Vista/2008)。
如果您安装的应用程序在两个地方都放置了 .DLL,那么我会联系开发人员来修复它。
答案3
答案4
DLL 加载由 Windows API LoadLibrary 函数处理,其搜索顺序在文档中描述如下:http://msdn.microsoft.com/en-us/library/ms684175(VS.85).aspx