通过进程名获取进程的工作目录

本文提供了一个使用Process Status API枚举并显示系统中所有进程路径的C语言程序示例。通过调用Windows API函数如EnumProcesses、OpenProcess等,程序能够获取每个活动进程的ID,并进一步获取其可执行文件的完整路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Code:
  1. #include <stdio.h>   
  2. #include <windows.h>   
  3. #include "PSAPI.H"   
  4. #pragma comment( lib, "PSAPI.LIB" )   
  5. int main(void)   
  6. {   
  7. DWORD processid[1024],needed,processcount,i;   
  8. HANDLE hProcess;   
  9. HMODULE hModule;   
  10. char path[MAX_PATH] = "",temp[256];   
  11. printf("ShowProcessPath with [Process Status API]/n/n");   
  12. EnumProcesses(processid, sizeof(processid), &needed);   
  13. processcount=needed/sizeof(DWORD);   
  14. for (i=0;i<processcount;i++)   
  15. {   
  16. hProcess=OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,false,processid[i]);   
  17. if (hProcess)   
  18. {   
  19. EnumProcessModules(hProcess, &hModule, sizeof(hModule), &needed);   
  20. GetModuleFileNameEx(hProcess, hModule, path, sizeof(path));   
  21. GetShortPathName(path,path,256);   
  22. itoa(processid[i],temp,10);   
  23. printf("%s --- %s/n",path,temp);   
  24. }   
  25. else  
  26. printf("Failed!!!/n");   
  27. }   
  28. CloseHandle(hProcess);   
  29. CloseHandle(hModule);   
  30. itoa(processcount,temp,10);   
  31. printf("/nProcess Count:%s/n/n",temp);   
  32. return 0;   
  33. }   
  34.   
  35. --------------------------------------------------------------------------------   
  36.   

psapi下载:http://down.cnzz.cn/Info/60358.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值