为什么加载 dll 不需要完整的文件路径?此功能在什么情况下会有所帮助?



为什么Windows在调用LoadLibrary时不需要完整的文件路径,或者对于带有注册dll的clsid等。在什么情况下,有人会受益于不得不回到DLL搜索顺序找到一个DLL ?

我的意思是,像%SystemRoot%或%ProgramFiles%这样的变量可以把你带到合适的文件夹,而.会把你留在当前目录。那么为什么要允许这种模糊性呢?

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

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

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

最新更新