【发布时间】:2023-04-08 05:24:01
【问题描述】:
我需要能够列出传递给其他正在运行的进程的命令行参数(如果有的话)。我已经有了系统上正在运行的进程的 PID,所以基本上我需要确定传递给具有给定 PID XXX 的进程的参数。
我正在研究Python module for managing processes 的核心部分。该代码以 C 语言编写为 Python 扩展,并将由更高级别的 Python 库包装。该项目的目标是避免依赖第三方库,例如 pywin32 扩展,或在命令行上调用“ps”或 taskkill 等丑陋的 hack,因此我正在寻找一种在 C 代码中执行此操作的方法。
我在谷歌上搜索了一下,发现了一些使用CreateRemoteThread() 将自己注入到另一个进程中的简短建议,然后运行GetCommandLine(),但我希望有人可能有一些工作代码示例和/或更好的建议。
更新:我在 CodeProject 上找到了完整的工作演示代码和使用 NtQueryProcessInformation 的解决方案:http://www.codeproject.com/KB/threads/GetNtProcessInfo.aspx - 这并不理想,因为它“不支持”直接从 NTDLL 结构中剔除信息,但是我会忍受它。感谢大家的建议。
更新 2:我通过更多的谷歌搜索找到了一个不使用 C++ 代码的 C 版本,并且更直接/简洁地指出了这个问题。详情请见http://wj32.wordpress.com/2009/01/24/howto-get-the-command-line-of-processes/。
谢谢!
【问题讨论】: