Windows系统编程 - 进程遍历

文章目录

  • 前言
    • 进程的遍历
      • CreateToolhelp32Snapshot
      • Process32First
      • Process32Next
      • 进程遍历
  • 总结

前言

  • 各位师傅好,我是qmx_07,今天给大家讲解进程遍历的相关知识点
    在这里插入图片描述

进程的遍历

  • 快照:使用vmware虚拟机的时候,经常需要配置环境服务,拍照保存,以防以后 环境崩溃,又需要重新配置
  • 思路:进程遍历 通过快照的方式,把当前系统的进程信息创建一份快照,浏览相关信息.

CreateToolhelp32Snapshot

  • 介绍:用于创建系统快照,包含 进程、线程、模块相关信息,需要引用<tlhelp32.h>
HANDLE CreateToolhelp32Snapshot([in] DWORD dwFlags,//保存快照的类型[in] DWORD th32ProcessID//创建快照的进程ID
);
  • dwFlags 取值:

TH32CS_SNAPPROCESS:创建包含当前运行进程的快照。
TH32CS_SNAPTHREAD:创建包含当前运行线程的快照。
TH32CS_SNAPMODULE:创建包含当前加载模块的快照。
TH32CS_SNAPMODULE32:创建包含当前加载模块的快照,返回32位模块结构。
TH32CS_SNAPALL:创建包含当前运行进程、线程和模块的快照。

  • th32ProcessID:创建快照的进程ID,0表示当前进程

通常用于获取系统中运行的进程和模块的信息,例如获取进程列表、查找特定进程、遍历模块信息等。通过遍历系统快照,可以获得进程、线程和模块的详细信息,进而进行相应的操作和分析

Process32First

介绍:通过CreateToolhelp32Snapshot函数创建的进程快照中获取第一个进程的信息

BOOL Process32First([in]      HANDLE           hSnapshot,//快照句柄[in, out] LPPROCESSENTRY32 lppe//指向PROCESSENTRY32的指针,用于接收进程的相关信息 
);

PROCESSENTRY32结构定义如下:

typedef struct tagPROCESSENTRY32 {DWORD     dwSize;DWORD     cntUsage;DWORD     th32ProcessID;//进程IDULONG_PTR th32DefaultHeapID;DWORD     th32ModuleID;//模块IDDWORD     cntThreads;//线程数DWORD     th32ParentProcessID;//父进程IDLONG      pcPriClassBase;//进程优先级DWORD     dwFlags;CHAR      szExeFile[MAX_PATH];//进程名称
} PROCESSENTRY32;

结构包含了进程的各种信息,包括进程ID、父进程ID、线程数量、进程优先级等

Process32First函数通常与Process32Next函数一起使用,用于遍历进程快照中的所有进程

Process32Next

  • 介绍:通过CreateToolhelp32Snapshot函数创建的进程快照中获取下一个进程的信息
BOOL Process32Next([in]  HANDLE           hSnapshot,/快照句柄[out] LPPROCESSENTRY32 lppe//指向LPPROCESSENTRY32的指针
);

注意:使用Process32Next函数之前,必须先调用一次Process32First函数来获取第一个进程的信息

进程遍历

#include <iostream>
#include <Windows.h>
#include <tlhelp32.h>
#include <stdio.h>using namespace::std;int main()
{HANDLE hProcessSnap = NULL;//创建,获取进程的信息hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);if (hProcessSnap == INVALID_HANDLE_VALUE)return (FALSE);//结构体PROCESSENTRY32 pe32 = { 0 };//填写结构体中的第一个成员pe32.dwSize = sizeof(PROCESSENTRY32);if (Process32First(hProcessSnap, &pe32)){//First成功之后,进入循环 //循环的时候调一下next,通过xxx拿一下进程的信息do{printf("pid:%d\t name:%s\r\n", pe32.th32ProcessID, pe32.szExeFile);} while (Process32Next(hProcessSnap, &pe32));}CloseHandle(hProcessSnap);
}

在这里插入图片描述

  • 这边拿到的进程ID 基本与任务管理器一致,但是HACKER Process能拿到更多,包含内核的进程

总结

  • 介绍了快照的基本概念,CreateToolhelp32Snapshot创建快照,LPPROCESSENTRY32结构,以及ProcessFirst,ProcessNext遍历进程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/477500.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【GD32】(三) ISP基本使用

0 前言 有一块GD32的板子不知道为啥用着用着就下载不了程序了&#xff0c;没办法&#xff0c;只能另寻他法。作为STM32的平替&#xff0c;GD32的功能和STM32基本是一致的&#xff0c;所以也可以使用ISP来下载程序。于是就开始复活这块板子。 1 BOOT模式 对于熟悉STM32开发的人…

【SKFramework框架核心模块】3-2、音频管理模块

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享QQ群&#xff1a;398291828小红书小破站 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 【Unity3D框架】SKFramework框架完全教程《全…

开源项目-如何更好的参与开源项目开发

开源之谜-提升自我核心竞争力 一、寻找适合自己的开源项目二、像坐牢一样闭关修炼三、最后的实践 开源代码对所有人开放&#xff0c;开发者可以基于现有代码进行扩展和创新&#xff0c;而不是从零开始&#xff0c;参与开源项目可以提升自我的技术能力&#xff0c;丰富个人的经历…

利用c语言详细介绍下插入排序

插入排序&#xff0c;被称为直接插入排序。它的基本思想是将一个记录插入到已经排好序的有序表中&#xff0c;从而一个新的、记录数增 1 的有序表。 一、图文介绍 我们还是使用数组【10&#xff0c;5&#xff0c;3&#xff0c;20&#xff0c;1]&#xff0c;排序使用升序的方式&…

STL——string类常用接口说明

目录 一、string类的介绍 二、string类常用接口的使用说明 1.成员函数 ​编辑 2.迭代器 3.容量 一、string类的介绍 下面是string类的文档对string类的介绍 1.string类是表示字符序列的对象 2.标准字符串类通过类似于标准字符容器的接口为此类对象提供支持&#xff0c…

Excel的图表使用和导出准备

目的 导出Excel图表是很多软件要求的功能之一&#xff0c;那如何导出Excel图表呢&#xff1f;或者说如何使用Excel图表。 一种方法是软件生成图片&#xff0c;然后把图片写到Excel上&#xff0c;这种方式&#xff0c;因为格式种种原因&#xff0c;导出的图片不漂亮&#xff0c…

2024年亚太地区数学建模大赛A题-复杂场景下水下图像增强技术的研究

复杂场景下水下图像增强技术的研究 对于海洋勘探来说&#xff0c;清晰、高质量的水下图像是深海地形测量和海底资源调查的关键。然而&#xff0c;在复杂的水下环境中&#xff0c;由于光在水中传播过程中的吸收、散射等现象&#xff0c;导致图像质量下降&#xff0c;导致模糊、…

【数据分享】2024年我国省市县三级的住宿服务设施数量(8类住宿设施/Excel/Shp格式)

宾馆酒店、旅馆招待所等住宿服务设施的配置情况是一个城市公共基础设施完善程度的重要体现&#xff0c;一个城市住宿服务设施种类越丰富&#xff0c;数量越多&#xff0c;通常能表示这个城市的公共服务水平越高&#xff01; 本次我们为大家带来的是我国各省份、各地级市、各区…

一文学习Android系统核心服务ServiceManager

ServiceManager 是 Android 系统中核心的系统服务注册与发现机制&#xff0c;它在 Android Framework 层扮演服务注册中心的角色。它允许进程通过它注册、查询和使用系统服务&#xff0c;实现进程间通信 (IPC) 的基础架构。 ServiceManager 的作用 服务注册&#xff1a;应用程…

DMA理论篇

DMA理论篇 简介 传统的数据传输都是需要CPU来实现&#xff0c;从一个地方拷贝到另一个地方&#xff1b;而DMA(Direct Memory Access)则不完全依赖CPU&#xff0c;DMA更新芯片SOC的一个控制器&#xff0c;他可以控制数据从内存中传输到另一个地方(外设、soc其它模块)&#xff…

SpringBoot 集成 html2Pdf

一、概述&#xff1a; 1. springboot如何生成pdf&#xff0c;接口可以预览可以下载 2. vue下载通过bold如何下载 3. 一些细节&#xff1a;页脚、页眉、水印、每一页得样式添加 二、直接上代码【主要是一个记录下次开发更快】 模板位置 1. 导入pom包 <dependency><g…

IDEA怎么定位java类所用maven依赖版本及引用位置

在实际开发中&#xff0c;我们可能会遇到需要搞清楚代码所用依赖版本号及引用位置的场景&#xff0c;便于排查问题&#xff0c;怎么通过IDEA实现呢&#xff1f; 可以在IDEA中打开项目&#xff0c;右键点击maven的pom.xml文件&#xff0c;或者在maven窗口下选中项目&#xff0c;…

webStorm安装

一、webStorm安装 简介 Webstorm是一款非常受欢迎的优秀开发工具&#xff0c;跟vscode同誉为卧龙凤雏编辑器&#xff0c;是97%开发人员的理想编辑器&#xff0c; 尤其是webstorm&#xff0c;焕然一新的外观&#xff0c;新的导航功能&#xff0c;githob拉取等&#xff0c;更是备…

案例研究|阿特斯的JumpServer分布式部署和多组织管理实践

苏州阿特斯阳光电力科技有限公司&#xff08;以下简称为阿特斯&#xff09;是一家集太阳能光伏组件制造和为全球客户提供太阳能应用产品研发、设计、制造、销售的专业公司。 阿特斯集团总部位于加拿大&#xff0c;中国区总部位于江苏省苏州市。通过全球战略和多元化的市场布局…

数字信号处理(Digital Signal Procession)总结

0、导入库 import numpy as np import matplotlib.pyplot as plt import numpy as np from matplotlib import pyplot as plt from scipy.signal import find_peaks1、创建时域信号 创建时间序列 T 0.01 # 采样间隔 fs 100 # 采样频率 L 1000 # 采样点数 tl 0 # 起始时间…

医院信息化与智能化系统(22)

医院信息化与智能化系统(22) 这里只描述对应过程&#xff0c;和可能遇到的问题及解决办法以及对应的参考链接&#xff0c;并不会直接每一步详细配置 如果你想通过文字描述或代码画流程图&#xff0c;可以试试PlantUML&#xff0c;告诉GPT你的文件结构&#xff0c;让他给你对应…

01Web3.0行业

目录 一、什么是Web 3.0? 二、Web 1.0 vs Web 2.0 vs Web 3.0 三、为什么选择Web 3.0 四、从法律角度观察Web 3.0 1. Web 3.0前时代的数字身份 问题1&#xff1a;个人信息的过度收集 问题2&#xff1a;个人信息的泄露和滥用 2. Web 3.0的解决方案及其法律问题 问题一&…

width设置100vh但出现横向滚动条的问题

在去做flex左右固定,中间自适应宽度的布局时, 发现这样一个问题: 就是我明明是宽度占据整个视口, 但是却多出了横向的滚动条 效果是这样的 把width改成100%,就没有滚动条了 原因: body是有默认样式的, 会有一定的默认边距, 把默认边距清除就是正常的了 同时, 如果把高度设…

opencv undefined reference to `cv::noarray()‘ 。window系统配置opencv,找到opencv库,但连接不了

之前都是在ubuntu里用opencv&#xff0c;今天为了方便在平时用Window10系统也用下c版的cv&#xff0c;就想配置一下vscode的cv环境&#xff0c;直接下载了一个编译好的opencv库&#xff08;带build文件夹的&#xff09;&#xff0c;刚开始用的是visual studio的编译器&#xff…