你不一定知道的四种遍历进程的方法(c语言)

一、前言

有时候写代码的时候,我们需要遍历出系统的一些进程,一般我们是直接在任务管理器中查看,不过我们也可以自己写一个,下面小编将会从三个方面着手,给大家讲讲如何遍历进程。

二、系统快照

一般会用到了3个关键的函数:CreateToolhelp32Snapshot(),Process32First()和Process32Next()。用法如下:

HANDLE WINAPI CreateToolhelp32Snapshot(
DWORD dwFlags, //系统快照要查看的信息类型
DWORD th32ProcessID //值0表示当前进程
);
BOOL WINAPI Process32First(
HANDLE hSnapshot, //CreateToolhelp32Snapshot()创建的快照句柄
LPPROCESSENTRY32 lppe //指向进程入口结构
);
BOOL WINAPI Process32Next(
HANDLE hSnapshot, //这里参数同Process32First
LPPROCESSENTRY32 lppe //同上
);

首先使用CreateToolhelp32Snapshot()创建系统快照句柄(hprocess是我们声明用来保存创建的快照句柄),然后调用Process32First()获得系统快照中的第一个进程信息,最后用一个循环调用来遍历系统中所有运行的进程。如图:

在这里插入图片描述

系统快照.rar: https://url18.ctfile.com/f/7715018-957884766-e523a6?p=6511 (访问密码: 6511)

三、枚举

通过函数EnumProcesses和EnumProcessModules用来枚举进程,如图

在这里插入图片描述

枚举.rar: https://url18.ctfile.com/f/7715018-957884757-564a80?p=6511 (访问密码: 6511)

四、通过函数WTSEnumerateProcess()来实现

利用了Windows NT/2000下终端服务API函数WTSEnumerateProcess()来实现,这个函数定义在Wtsapi32.dll里,如图:

在这里插入图片描述

通过函数WTSEnumerateProcess()来实现.rar: https://url18.ctfile.com/f/7715018-957884763-311b38?p=6511 (访问密码: 6511)

五、通过NtQuerySystemInformation函数来实现

利用了Native Api的NtQuerySystemInformation函数来实现。没有该函数的导入库,要自己定义,如图:

在这里插入图片描述

通过NtQuerySystemInformation函数来实现.rar: https://url18.ctfile.com/f/7715018-957884760-c03e3e?p=6511 (访问密码: 6511)

六、结语

其实除了上述四种方法外,还有一种,那就是驱动级别的遍历进程,但是那种难度颇高,不适合新手学习,尤其是安装环境都很麻烦,所以新手掌握这几种方法就够了。今天就到这里,大家有什么疑问,欢迎通过公众号简易编程网添加我,我来为您解答。当然,最重要的还是要感谢大家的支持与鼓励,让我能持续不断地给大家输出干货。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_30852573

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值