如果我 LoadLibrary("%windir%\\system32\\ole32.dll")
这意味着Windows只会从“c:\ windows \ system32 \ ole32.dll”加载? C中的LoadLibrary()也了解环境变量吗?
答案 0 :(得分:6)
但是,Windows API中有一个函数可以替换字符串中的环境变量:ExpandEnvironmentStrings()
。您可以在调用LoadLibrary()
之前在路径上执行所需的替换。
答案 1 :(得分:4)
docs for LoadLibrary明确指出:
如果字符串指定了完整路径,则该函数仅搜索该路径 模块的路径。
那就是说,他们没有提到对环境变量替代的支持。我非常怀疑它们是否支持环境变量替换:这是一个shell特性,而不是内核API。
BTW,这意味着LoadLibrary()
会将%windir%\blah.dll
视为相对路径,因为它不以驱动器号或UNC路径开头。因此,它会查看整个系列的目录,寻找一个名为%windir%
的子目录,它不太可能找到!
我给了它一个快速测试:它证实了我的意见。错误= 126:找不到指定的模块。