python – 读取另一个进程的命令行参数(Win32 C代码)

前端之家收集整理的这篇文章主要介绍了python – 读取另一个进程的命令行参数(Win32 C代码)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要能够列出传递给其他正在运行的进程的命令行参数(如果有的话).我已经在系统上运行了进程的PID,所以基本上我需要确定传递给给定PID XXX的参数.

我正在研究一个Python module for managing processes的核心部分.代码在C中被编写为Python扩展,并将被更高级的Python库包装.该项目的目标是避免依赖于第三方库,如pywin32扩展,或者在命令行上调用’ps’或taskkill等丑陋的攻击,所以我正在寻找一种在C代码中执行此操作的方法.

我已经Google Googled,并发现一些简单的建议,使用CreateRemoteThread()注入到另一个进程,然后运行GetCommandLine(),但我希望有人可能有一些工作代码示例和/或更好的建议.

更新:我发现完整的演示代码解决方案使用NtQueryProcessInformation在CodeProject:http://www.codeproject.com/KB/threads/GetNtProcessInfo.aspx – 这是不理想的,因为“不支持”直接从NTDLL结构剔除信息,但我会生活在它.感谢所有的建议.

更新2:我通过更多的Google搜索来挖掘不使用C代码的C版本,并且更直接/简洁地指向这个问题.详见http://wj32.wordpress.com/2009/01/24/howto-get-the-command-line-of-processes/.

谢谢!

解决方法

为了回答自己的问题,我终于找到了一个完全正在寻找的CodeProject解决方案:

http://www.codeproject.com/KB/threads/GetNtProcessInfo.aspx

@Reuben已经指出,您可以使用NtQueryProcessInformation检索这些信息.不幸的是,这不是一个推荐的方法,但鉴于只有其他解决方案似乎是引起WMI查询的开销,我想我们现在将采用这种方法.

请注意,如果使用从64位Windows操作系统上的32位Windows编译的代码,这似乎不起作用,但是由于我们的模块是从目标的源编译出来的,为了我们的目的应该是可行的.我宁愿使用这个现有的代码,应该在Windows 7或更高的日期中断,我们可以再次看一下使用WMI.感谢您的回应!

更新:一个更简洁和C(相对于C)相同技术的版本如下所示:

http://wj32.wordpress.com/2009/01/24/howto-get-the-command-line-of-processes/

原文链接:https://www.f2er.com/python/185796.html

猜你在找的Python相关文章