真正判断操作系统是否为x64的方法
2014-01-16 15:44
127 查看
如何判断当前操作系统是否为x64?百度了一下,几乎全是这个答案
这个代码在大多数时候确实是没有问题的,因为他们的程序都是x86编译的!最后一传十,十传百。。。
其实MSDN上已经明确说明了IsWow64Process函数的第2个参数,当你的进程是x64且系统是x64的时候这个函数是会返回FALSE的
也就是说,在两边都是x64的情况下,上面的代码将会返回FALSE!
那么怎么真正准确的判断当前系统是不是x64呢?
BOOL IsWow64() { typedef BOOL(WINAPI *ISWOW64PROCESS)(HANDLE, PBOOL); ISWOW64PROCESS fnIsWow64Process; BOOL bIsWow64 = FALSE; fnIsWow64Process = (ISWOW64PROCESS)GetProcAddress(GetModuleHandle(TEXT("kernel32")), "IsWow64Process"); if (fnIsWow64Process != nullptr) fnIsWow64Process(GetCurrentProcess(), &bIsWow64); return bIsWow64; }
这个代码在大多数时候确实是没有问题的,因为他们的程序都是x86编译的!最后一传十,十传百。。。
其实MSDN上已经明确说明了IsWow64Process函数的第2个参数,当你的进程是x64且系统是x64的时候这个函数是会返回FALSE的
也就是说,在两边都是x64的情况下,上面的代码将会返回FALSE!
那么怎么真正准确的判断当前系统是不是x64呢?
bool isWow64() { #ifdef _WIN64 return true; #else typedef BOOL(WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL); auto fnIsWow64Process = (BOOL(WINAPI*)(HANDLE, PBOOL))GetProcAddress(GetModuleHandle(_T("kernel32")), "IsWow64Process"); if (fnIsWow64Process) { BOOL f64 = FALSE; return !!fnIsWow64Process(GetCurrentProcess(), &f64) && f64; } return false; #endif }
相关文章推荐
- 判断操作系统是否为x64的方法
- 判断指定进程是否为x64的方法(在ntdll判断某个x64函数是否存在)
- 如何判断团队是否真正实施Scrum? —— Scrum方法二十问
- 如何判断团队是否真正实施Scrum -- Scrum方法二十问(一) Scrum 使用者强烈推荐
- 如何判断团队是否真正实施Scrum -- Scrum方法二十问 (二)
- 如何判断团队是否真正实施Scrum -- Scrum方法二十问
- 【C/C++】判断指定进程是否为x64的方法
- c#判断是否是64位操作系统方法
- Lua判断字符串前缀是否为指定字符的3种方法
- js判断两个日期是否相等的方法
- Python判断文件或文件夹是否存在的三种方法
- 如何判断操作系统类型的三种方法
- java中判断字符串是否为数字的三种方法
- PostgreSQL判断表是否存在最快的方法
- Python判断文件是否存在的三种方法【转】
- 判断 iframe 是否加载完成的完美方法
- PHP简单判断字符串是否包含另一个字符串的方法
- 用Java判断一个URL是否有效的两种方法
- js判断字符是否存在汉字的方法
- 判断 iframe 是否加载完成的完美方法