DLLs for current process
如何(使用非CLR C)判断给定的运行进程(按ID)使用哪个DLL?具有指向这些DLL和EXE的文件系统路径。
先谢谢您。
- 可能的复制品stackoverflow.com/questions/450039/
-
@Anton:加载的模块与依赖项不同,另一个问题是.NET。
-
@Ben Voigt:我根据那个问题的公认答案说了重复。答案涵盖了EnumProcessModules函数,该函数返回运行时进程依赖项或进程中加载??的所有模块。我只是重读了这个问题,并且确实是关于静态依赖关系的,所以您绝对正确。
-
@安东:你的意思是,即使另一个问题并非完全是骗子,答案也涵盖了这个问题。
-
@本:是的!这很奇怪,但是这些不同的问题有相同的答案。其实那个答案不是那个问题的答案
如果尝试在代码中执行此操作,则可能正在寻找EnumProcessModules函数(或K32EnumProcessModules取决于操作系统。有关更多详细信息,请参见链接)。 EnumProcessModulesEx可以为您提供更多信息。只需给它一个处理过程的句柄,即可知道要加载哪些模块(DLL)。如果您不知道该句柄,则可以使用EnumProcesses或OpenProcess(如果您知道该PID)找到它。
- 在这里您可以找到示例代码,该示例代码演示了使用EnumProcessModules函数msdn.microsoft.com/en-us/library/ms682621(VS.85).aspx的方法
-
这个问题明确针对当前流程,必须有一个更好的解决方案
-
@DitmarWendt这个答案也适用于其他过程(正如我在答案中已经说过的)。 EnumProcessModules接受要枚举的任何进程的句柄。