BOOL GetProcessPathByPId( const DWORD dwProcessId, TCHAR *cstrPath )
{
HANDLE hProcess = NULL;
BOOL bSuccess = FALSE;
hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ , FALSE, dwProcessId );
do
{
if ( NULL == hProcess )
{
break;
}
TCHAR szPath[MAX_PATH + 1] = {0};
HMODULE hMod = NULL;
DWORD cbNeeded = 0;
if( FALSE == EnumProcessModules( hProcess, &hMod, sizeof( hMod ), &cbNeeded ) )
{
break;
}
if ( 0 == GetModuleFileNameEx( hProcess, hMod, szPath, MAX_PATH ) )
{
break;
}
wcscpy(cstrPath ,szPath);
bSuccess = TRUE;
} while( 0 );
if ( NULL != hProcess )
{
CloseHandle( hProcess );
hProcess = NULL;
}
return bSuccess;
}
VC 通过进程ID获取完整路径
最新推荐文章于 2024-05-30 19:35:23 发布
本文介绍了一个使用C/C++编写的函数,该函数通过进程ID(PID)来获取进程的完整路径。首先,函数尝试打开目标进程以获取必要的权限,然后枚举进程模块并调用GetModuleFileNameEx函数来获取模块的文件名。最后,将路径复制到提供的字符数组中,并返回操作是否成功。
398

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



