为什么Windows在调用LoadLibrary时没有完整的文件路径,或者对于已注册的DLL等的CLSIDs需要一个完整的文件路径。在什么情况下,有人会因为不得不依靠DLL搜索顺序来查找dll而受益?
我的意思是,%SystemRoot%或%ProgramFiles%等变量可以将您带到相应的文件夹,而。\会将您留在当前目录中。那么为什么要允许模糊呢?
答案 0 :(得分:0)
对于与GetProcAddress()
的显式链接,我认为如果可能的话,应该使用DLL的绝对路径。
对于.lib文件的隐式链接,则必须在链接时确定DLL的名称,以排除绝对路径。
最安全的做法是将DLL放在与可执行文件相同的目录中,在%Program Files%下并受UAC保护,并使用新的DLL搜索顺序。