GetModuleFileNameEx遍历获取64bit程序路径失败的一种解决方法(Win7-64-bit)
2015-05-03 12:18
417 查看
问题:
32位程序在64位系统上调用GetModuleFileNameEx()遍历获取64位进程的全路径失败,得到的路径都为空。
根据官方的说法:For the best results use the following table to convert paths.
Windows 2000 = GetModuleFileNameEx()
Windows XP x32 = GetProcessImageFileName()
Windows XP x64 = GetProcessImageFileName()
Windows Server2003 = GetProcessImageFileName()
Windows Vista = QueryFullProcessImageName()
Windows 7 = QueryFullProcessImageName()
Note: If you are not aware the API GetProcessImageFileName() returns a kernel DOS device path. You can use the following API to map the device paths to a Win32 format.
但要注意的是GetModuleFileName在64bit下获取到的是不正确的,用32去填充64结果是空。
本人在32bit的win7下可以准确获取,64bit的win7下得不到自己要的东西。如下图所示:
推荐用vista新增的:QueryFullProcessImageName(),结果入下图:
另外搜遍了网络也没搜到该函数的样例,再懒也只好自己写了~~
DWORD size = MAX_PATH;
char sExeName[MAX_PATH] = {0};
QueryFullProcessImageName(hProcess, 0, sExeName, &size);
当然用GetProcessImageFileName获取更好,只是代码有点长,懒的写了。
相关文章推荐
- GetModuleFileNameEx遍历获取64bit程序路径失败的一种解决方法(Win7-64-bit)
- GetModuleFileNameEx遍历获取64bit程序路径失败的一种解决方法(Win7-64-bit)
- GetModuleFileNameEx遍历获取64bit程序路径失败的一种解决方法(Win7-64-bit)
- Win7 64bit 系统安装DirectX提示失败的一种情况的解决方法记录
- 异步获取的表单数据后台程序没有获取的一种情况及其解决方法
- Qt creater出现“启动程序失败,路径或者权限错误”解决方法
- Qt出现“QSqlDatabase: QMYSQL driver not loaded”和“启动程序失败,路径或者权限错误”解决方法
- Win7上安装32位Oracle客户端错误解决方法:[INS-30131] 执行安装程序验证所需的初始设置失败
- WIN7 (64 位)安装AutoCAD2012失败解决方法
- win7安装oracle1方法2c问题及解决- [INS-30131] 执行安装程序验证所需的初始设置失败。
- SQL安装时出错,提示:安装程序配置服务器失败 参考服务器错误日志。针对其中一种情况的解决方法!
- Windows7 64 bit (包含32位解决方法)下解决:检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败
- win7 打开office失败并提示“向程序发送命令错误” 解决方法
- 程序获取eclipse工程下文件路径的解决方法
- C#获取项目程序及运行路径的方法
- C#中获取程序当前路径的7种常用的方法
- C#中获取程序当前路径的7种最常用的方法
- C# 获取程序路径的方法集锦
- C#中获取程序当前路径的集中方法
- [转]C#获取程序当前路径的方法