上次写好的程序,用非管理员用户组登陆后运行,结果发现不能获取目标进程的全路径。仔细检查了,应该是在普通用户下无法提升本进程到调试权限。怎么都不能用OpenProcess返回目标进程的句柄。后来发现用CreateToolhelp32Snapshot 配合Module32First可以顺利得到目标进程的全路径。分享代码如下
dwPID为目标进程ID
HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPID); //建立进程快照并用MODULEENTRY32结构获取程序全路径
MODULEENTRY32 me; //一个
ZeroMemory(&me, sizeof(me));
me.dwSize = sizeof(me);
if(Module32First(hSnapShot,&me))
{
if(lstrcpy(exePath, me.szExePath))
return true;
}