转载自: https://blog.csdn.net/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;
}