加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-16 23:35:21 所属栏目:Python 来源:网络整理
导读:我需要能够列出传递给其他正在运行的进程的命令行参数(如果有的话).我已经在系统上运行了进程的PID,所以基本上我需要确定传递给给定PID XXX的参数. 我正在研究一个Python module for managing processes的核心部分.代码在C中被编写为Python扩展,并将被更高级
我需要能够列出传递给其他正在运行的进程的命令行参数(如果有的话).我已经在系统上运行了进程的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/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读