应用程序启动时(.dll)库文件加载路径是怎么样的

windows下运行应用程序,加载(.dll)库文件时,库文件路径是怎样的(或者说加载库文件有没有优先去某个路径下面加载),不排除windows下有相同的库

默认会搜素程序所在路径,windows,system32,path环境变量指定的路径。并且程序路径的优先级更高。

DLL作为一种可执行文件,其搜索路径就是PATH环境变量所指定的路径外加当前目录。PATH环境变量分为系统PATH环境变量和当前用户的PATH环境变量,所以系统加载DLL时按照以下顺序搜索:
1. 当前路径
2. 用户PATH环境变量指定的路径
3. 系统PATH环境变量指定的路径
且在PATH环境变量中如果有多个路径(用分号分隔),排在前面的路径优先级高(这应该就是DLL劫持的原理)

总结一下就是,当前路径优先级最高,用户PATH环境变量中的路径次之,系统PATH环境变量中的优先级最低。

可以总结一下查找顺序:

  1. 可执行文件所在目录;

2.进程当前目录;

3.系统目录,%SystemRoot%/system32

4.16位系统目录;,%SystemRoot%/system

5.Windows目录,%SystemRoot%/

6.环境变量PATH中的目录;