转载自: https://blog.youkuaiyun.com/changshiyzj/article/details/83826060
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;
}
本文提供了一个使用C/C++编写的函数,该函数通过指定的进程ID (PID) 获取进程的完整路径。此函数首先使用OpenProcess函数打开指定的进程,然后通过EnumProcessModules和GetModuleFileNameEx函数来获取模块的文件名,最终返回进程的路径。
1373

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



