为什么不是一个完整的文件path需要加载一个DLL? 在什么情况下这个function是有益的?

为什么Windows在调用LoadLibrary或者CLSID w / registered DLL等时不需要完整的文件path?在某些情况下,某人会从DLLsearch顺序上退缩以find一个dll?

我的意思是,像%SystemRoot%或%ProgramFiles%这样的variables可以让你到合适的文件夹,而。\会把你留在当前的目录中。那么为什么要模糊呢?

为了显式链接到GetProcAddress()我会争辩说,如果可能的话,应该使用DLL的绝对路径。

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

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