通过提供DLLName来定位DLL路径

2 c c++ dll winapi

如果我做

LoadLibrary("MyTest.dll")
Run Code Online (Sandbox Code Playgroud)

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

我怎样才能模仿相同的功能?我需要通过作为参数传递给函数来定位C:\TestFolder\Test\MyTest.dll(C:\TestFolder\Test\in in %PATH%)MyTest.dll.有这样的API吗?还是一个功能?

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

Ben*_*igt 10

若要加载DLL里面没有运行任何恶意代码,请LoadLibraryExDONT_RESOLVE_DLL_REFERENCESLOAD_LIBRARY_AS_DATAFILE标志.

然后你可以使用GetModuleFileName.

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

  • 确实在这种情况下有效.更通用的解决方案是[`PathFindOnPath`](http://msdn.microsoft.com/en-us/library/bb773594.aspx). (5认同)
  • 不,你不需要在那里指定任何东西.他只想查看系统路径,如果你为第二个参数传递`NULL`就会这样做. (2认同)