来自另一个DLL的LoadLibrary

时间:2011-04-25 12:49:01

标签: windows dll path loadlibrary

in MSDN所述的DLL查找路径是:

  1. 当前进程的可执行模块所在的目录。
  2. 当前目录。
  3. Windows系统目录。 GetSystemDirectory函数检索此目录的路径。
  4. Windows目录。 GetWindowsDirectory函数检索此目录的路径。
  5. PATH环境变量中列出的目录。
  6. 这带来了以下疑问:

    假设我在某个目录中有一个可执行文件,例如:c:\execdir\myexe.exe,它会加载PATH中找到并位于c:\dlldir\mydll.dll的DLL。现在,假设mydll.dll尝试使用LoadLibrary加载另一个DLL。首先会查看哪个目录 - c:\dlldirc:\execdir

    我认为上面引用的查找规则说它将是c:\execdir,因为它据称是“当前进程的可执行模块所在的目录”,但是从另一个获得确认会很好源。

    编辑:此外,c:\dlldir\是否在处查看?毕竟,它既不是.exe所在的位置,也不是“当前目录”(如果这意味着一般意义上的话)。

    P.S。我对Windows XP和7都感兴趣。

1 个答案:

答案 0 :(得分:4)

是的,它首先是可执行文件目录,在某些情况下它已实现this could lead to a security vulnerability。该页面上有建议,以确保您的应用程序不会通过此机制受到损害。