如果我这样做
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而不必加载它。
答案 0 :(得分:11)
要在不运行任何恶意代码的情况下加载DLL,请使用带有LoadLibraryEx
和DONT_RESOLVE_DLL_REFERENCES
标记的LOAD_LIBRARY_AS_DATAFILE
。
然后您可以使用GetModuleFileName
。
您还应该阅读所有其他标志,这些标志允许您执行Windows能够执行的所有各种搜索。