一:获取NT下进程路径的方法
在Win9X系统中,利用ToolHelp API中的相关函数可以很方便得得到进程的名称及其路径。但这种方法在NT系统中就不能奏效了,szExeFile仅仅得到的是进程的名称,并没有包含进程的路径。
如何在NT下获取进程的路径呢?(由于WIN9X系统不在我们讨论的范围之内,所以我们选用PSAPI中的相关函数进行说明,这仅仅适用于NT系统。)其实也很简单——用OpenProcess()函数将进程打开后,再利用EnumProcessModules()函数枚举该进程的模块,最后利用GetModuleFileNameEx()函数就能取得该进程的路径了。
下面的这段程序将枚举NT系统中的进程,并将显示每个进程的路径。当然,这种方法对一些系统保护的进程而言或多或少会出现些问题,例如:smss.exe、winlogon.exe,csrss.exe等。如果谁有更好的方法请赐教,不胜感激。
二:具体实践
//////////////////////////////////////////////////////////////////////////////////
#include
#include
#include "PSAPI.H"
#pragma comment( lib, "PSAPI.LIB" )
int main(void)
{
DWORD processid[1024],needed,processcount,i;

本文介绍了在Windows NT系统中如何获取进程的完整路径,通过使用OpenProcess、EnumProcessModules和GetModuleFileNameEx等PSAPI函数,来实现对进程模块的枚举,从而得到进程路径。这种方法在某些系统保护进程上可能存在问题,如smss.exe、winlogon.exe和csrss.exe。
最低0.47元/天 解锁文章
3011

被折叠的 条评论
为什么被折叠?



