为什么加载dll不需要完整的文件路径?在什么情况下这个功能会有益?

时间:2011-04-21 16:02:35

标签: windows dllimport dll loadlibrary

为什么Windows在调用LoadLibrary时没有完整的文件路径,或者对于已注册的DLL等的CLSIDs需要一个完整的文件路径。在什么情况下,有人会因为不得不依靠DLL搜索顺序来查找dll而受益?

我的意思是,%SystemRoot%或%ProgramFiles%等变量可以将您带到相应的文件夹,而。\会将您留在当前目录中。那么为什么要允许模糊呢?

1 个答案:

答案 0 :(得分:0)

对于与GetProcAddress()的显式链接,我认为如果可能的话,应该使用DLL的绝对路径。

对于.lib文件的隐式链接,则必须在链接时确定DLL的名称,以排除绝对路径。

最安全的做法是将DLL放在与可执行文件相同的目录中,在%Program Files%下并受UAC保护,并使用新的DLL搜索顺序。