在Windows中,您能以编程方式(C ++)检测其他正在运行的程序加载了哪些DLL?

时间:2011-08-11 04:33:32

标签: c++ windows dll

我希望这不是一个简单的问题,但在Windows中,是否有可能以编程方式(C ++)检查哪些DLL已被其他同时运行的程序加载?

我知道GetModuleHandle函数可用于检测当前程序已加载的DLL,但它不能跨程序边界工作。

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

Toolhlp32.dll就是这么做的。看这里: http://msdn.microsoft.com/en-us/library/ms686840(v=VS.85).aspx

您最终需要的API是Module32First / Next。

答案 1 :(得分:1)

PSAPI(http://msdn.microsoft.com/en-us/library/ms682621(v=vs.85).aspx)还提供了一些功能来通过系统进程和模块列表进行搜索,它还可以获取toolhlp32可能由于各种原因(例如手动隐藏)而错过的一些模块)。它也适用于x64进程iirc