利用GetModuleFileName在32位机器上开发的程序,在64位机器上运行的时候,GetModuleFileName和GetModuleFileNameEX获取信息失败。
解决64位机器获取失败的这个问题,有两个方法
1.用64位机器开发64位的程序,用
GetModuleFileNameEX方法。
2.用 QueryFullProcessImageName (Vista and up) or GetProcessImageFileName (XP and up)。
GetProcessImageFileName可以在xp和win732位和64位都能获取进程路径,GetModuleFileNameEx只能获取32位进程路径
但GetProcessImageFileName获取的路径都是包含设备名的路径,因此我们还要转换成一下,因此我们最终的GetProcessFullPath函数这样的
- //获取进程完整路径
- BOOL GetProcessFullPath(DWORD dwPID, TCHAR pszFullPath[MAX_PATH])
- {
- TCHAR szImagePath[MAX_PATH];
- HANDLE hProcess;
- if(!pszFullPath)
- return FALSE;