GetModuleFileName 64位问题

本文讨论了在32位系统上开发的程序在64位系统中运行时,GetModuleFileName和GetModuleFileNameEx无法正确获取模块路径的问题。GetProcessImageFileName在所有平台上都能获取进程路径,但返回的路径包含设备名。为解决这个问题,提供了GetProcessFullPath函数,该函数结合使用GetProcessImageFileName和DosPathToNtPath来获取不含设备名的完整进程路径。
摘要由CSDN通过智能技术生成

利用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函数这样的

  1. //获取进程完整路径  
  2. BOOL GetProcessFullPath(DWORD dwPID, TCHAR pszFullPath[MAX_PATH])  
  3. {  
  4.     TCHAR       szImagePath[MAX_PATH];  
  5.     HANDLE      hProcess;  
  6.       
  7.     if(!pszFullPath)  
  8.         return FALSE;  
  9.       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值