【问题标题】:DLLs for current process当前进程的 DLL
【发布时间】:2011-05-28 15:04:15
【问题描述】:

如何判断(使用非 CLR C++)给定运行进程(通过 ID)使用哪些 DLL?带有这些 DLL 和 EXE 的文件系统路径。

提前谢谢你。

【问题讨论】:

  • @Anton:加载的模块与依赖项不同,另一个问题是 .NET 为中心的。
  • @Ben Voigt:根据该问题中接受的答案,我说过重复项。答案涵盖 EnumProcessModules 函数,该函数返回“运行时进程依赖项”或进程中加载​​的所有模块。我只是重新阅读了这个问题,它确实是关于静态依赖的,所以你是绝对正确的。
  • @Anton:你确实有一点,即使另一个问题不完全是骗子,答案也涵盖了这个问题。
  • @Ben:是的!这很奇怪,但这些不同的问题有相同的答案。实际上那个答案不是那个问题的答案

标签: c++ windows dll process


【解决方案1】:

如果您尝试在代码中执行此操作,您可能正在寻找EnumProcessModules 函数(或K32EnumProcessModules,具体取决于操作系统。有关详细信息,请参阅链接)。有一个EnumProcessModulesEx 可以为您提供更多信息。只需给它一个您想知道加载了哪些模块(DLL)的进程的句柄。如果您不知道句柄,可以使用EnumProcessesOpenProcess 如果您知道PID。

【讨论】:

  • 在这里您可以找到演示使用EnumProcessModules函数msdn.microsoft.com/en-us/library/ms682621%28VS.85%29.aspx的方法的示例代码
  • 这个问题是明确针对当前流程的,一定有更好的p
  • @DitmarWendt 这个答案也适用于其他进程(正如我在回答中已经说过的那样)。 EnumProcessModules 处理您要枚举的任何进程。
猜你喜欢
  • 2013-11-12
  • 1970-01-01
  • 2013-01-14
  • 1970-01-01
  • 2016-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多