随笔- 20  文章- 0  评论- 0  阅读- 5951 

R3层枚举进程主要有两种方法,使用ToolHelp库及PsApi库

ToolHelp库:

点击查看代码
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnapshot == INVALID_HANDLE_VALUE)
{
_tprintf(_T("CreateToolhelp32Snapshot Error\r\n"));
return;
}
PROCESSENTRY32 processEntry;
processEntry.dwSize = sizeof(processEntry);
int count = 0;
if (Process32First(hSnapshot, &processEntry))
{
while (Process32Next(hSnapshot, &processEntry))
{
count++;
_tprintf(_T("第%d个进程 进程ID:%d 进程名:%s\r\n"), count, processEntry.th32ProcessID, processEntry.szExeFile);
}
CloseHandle(hSnapshot);
}

PsApi库:

点击查看代码
DWORD dwProcessId[0x1000];
DWORD dwNeeded = 0;
DWORD dwProcessCount = 0;
TCHAR strProcessName[260];
if (!EnumProcesses(dwProcessId, sizeof(dwProcessId), &dwNeeded))
{
DWORD Error = GetLastError();
_tprintf(_T("EnumProcesses fail! Error:%d\r\n"),Error);
}
dwProcessCount = dwNeeded / sizeof(DWORD);
for (int i = 0; i < dwProcessCount; i++)
{
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, dwProcessId[i]);
if (hProcess != NULL)
{
GetProcessImageFileName(hProcess, strProcessName, sizeof(strProcessName));
_tprintf(_T("进程%d的名称为:%s\r\n"),i, strProcessName);
}
}
 posted on   Hanpto  阅读(54)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示