我正在开发一个用于管理进程的Python模块的核心部分。该代码是用C编写的Python扩展,并将由更高级别的Python库包装。这个项目的目标是避免依赖第三方库,如pywin32扩展,或像在命令行上调用“ps”或taskkill这样的丑陋的hack,因此我正在寻找一种在C代码中完成此操作的方法。
我已经在Google上搜索过了,发现一些简短的建议使用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/了解详情。
谢谢!