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