如何枚举系统所有进程的执行文件的详细路径?

uaiia 2003-11-13 05:02:09
大家知道Process32First可以枚举所有进程
PROCESSENTRY32结构里面的szExeFile能够取得进程的文件名
但是在有些系统中szExeFile给出的只是文件名,没有路径的,
有没有什么办法可以枚举系统所有进程的执行文件的详细路径?
...全文
97 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hacke 2003-12-04
  • 打赏
  • 举报
回复
tongshang
vcforever 2003-11-13
  • 打赏
  • 举报
回复
来晚了方法同上!
yintongshun 2003-11-13
  • 打赏
  • 举报
回复
取得执行文件名再:


DWORD GetModuleFileName(
HMODULE hModule, // handle to module
LPTSTR lpFilename, // file name of module
DWORD nSize // size of buffer
);

返回的是带路径的
binjuny 2003-11-13
  • 打赏
  • 举报
回复
DWORD GetModuleFileNameEx(
HANDLE hProcess,
HMODULE hModule,
LPTSTR lpFilename,
DWORD nSize
);
最好用它
mfc168 2003-11-13
  • 打赏
  • 举报
回复
用上面的函数获得szExeFile
然后:

DWORD GetModuleFileName(
HMODULE hModule, // handle to module
LPTSTR lpFilename, // file name of module
DWORD nSize // size of buffer
);

返回的是带路径的
GR 2003-11-13
  • 打赏
  • 举报
回复
找到pPDB的的地址就可。进程环境变量的指针存放在pPDB中。pPDB其实就是进程内核对象。进程内核对象其实就是PID xor 一个随机启动的数值,这是在9x下。win2000下。进程内核对象有点复杂。cvc论坛上有一篇文章专门介绍win2000下进程表的文章。

那个随机启动的值怎么去得来,应该有很多方法。matt的书上介绍的是用SEH来得的。所以只要有PID就可以拿到所有的进程资料


http://expert.csdn.net/Expert/topic/2439/2439720.xml?temp=.4930231..随机值
saucer 2003-11-13
  • 打赏
  • 举报
回复
on these systems, use CreateToolhelp32Snapshot (with TH32CS_SNAPMODULE) flag, Module32First and Moudule32Next API, MODULEENTRY32 structure contains a szExePath field which should give you the full path


also see
API function call unification: the case of Processes/Modules enumeration
http://www.codeproject.com/threads/processapi.asp

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧