dll 隐式加载 搜索路径

来源:互联网 发布:巧克力 日本 知乎 编辑:程序博客网 时间:2024/05/01 23:31

E 可执行文件目录
S 系统目录(C:\Windows\System32)
S16 16 位系统目录(C:\Windows\System)
C 当前目录(注意,比如在 D:\ 下用 C:\Windows\Explorer.exe 这种形式从任何地方启动应用程序,那么此时 C 为 D:\,E 为 C:\Windows)
W Windows 目录(C:\Windows)
P Path 环境变量中指定的目录
D LoadLibrary 函数参数中指定的 DLL 文件所在目录(如果有)

注册表中的 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Sesssion Manager 下 SafeDllSearchMode DWORD 键值为 1(默认)时启用安全 DLL 搜索;为 0 时禁用。
标准搜索顺序:
如果启用了安全 DLL 搜索:E S S16 W C P
如果禁用了安全 DLL 搜索:E C S S16 W P

用 SetDefaultDllDirectories 函数更改某个进程的 DLL 搜索行为,需要打一个 KB2533623 补丁。

替换搜索顺序:在 LoadLibraryEx 函数参数中指定 LOAD_WITH_ALTERED_SEARCH_PATH 开关。
如果启用了安全 DLL 搜索:D S S16 W C P
如果禁用了安全 DLL 搜索:D C S S16 W P

原创粉丝点击