通过提供DLLName来定位DLL路径

时间:2014-08-23 16:13:06

标签: c++ c winapi dll

如果我这样做

LoadLibrary("MyTest.dll")

Windows会从"C:\TestFolder\Test\MyTest.dll"找到并加载它,因为"C:\TestFolder\Test\"位于%PATH%文件夹中。

如何模拟相同的功能?我需要通过将C:\TestFolder\Test\MyTest.dll作为参数传递给函数来找到C:\TestFolder\Test\%PATH%MyTest.dll中)。有这样的API吗?还是一个功能?

P.S。我不能做LoadLibrary然后GetModuleHandle并找到Path,有时这个DLL可能是恶意DLL而我无法加载它。所以我需要找到PATH而不必加载它。

1 个答案:

答案 0 :(得分:11)

要在不运行任何恶意代码的情况下加载DLL,请使用带有LoadLibraryExDONT_RESOLVE_DLL_REFERENCES标记的LOAD_LIBRARY_AS_DATAFILE

然后您可以使用GetModuleFileName

您还应该阅读所有其他标志,这些标志允许您执行Windows能够执行的所有各种搜索。