思路:

1.先判断是否为64位系统

2.判断是否为64位程序

代码:

// ProcessType.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//判断运行程序exe是否为64位程序#include <iostream>
#include <Windows.h>using namespace std;//判断是否为64位系统
bool is64BitOS()
{SYSTEM_INFO cur_system_info;GetNativeSystemInfo(&cur_system_info);WORD system_str= cur_system_info.wProcessorArchitecture;//判断是否为64位系统if (system_str == PROCESSOR_ARCHITECTURE_IA64 || system_str == PROCESSOR_ARCHITECTURE_AMD64){return true;}return false;
}//判断是否为64位进程
//@param:进程id
/*
Parameters
hProcess
A handle to the process. The handle must have the PROCESS_QUERY_INFORMATION or PROCESS_QUERY_LIMITED_INFORMATION access right. For more information, see Process Security and Access Rights.
Windows Server 2003 and Windows XP:  The handle must have the PROCESS_QUERY_INFORMATION access right.
Wow64Process
A pointer to a value that is set to TRUE if the process is running under WOW64 on an Intel64 or x64 processor. If the process is running under 32-bit Windows, the value is set to FALSE. If the process is a 32-bit application running under 64-bit Windows 10 on ARM, the value is set to FALSE. If the process is a 64-bit application running under 64-bit Windows, the value is also set to FALSE.
*/
bool is64BitProcess(DWORD dwPid)
{
if (!is64BitOS())
{cout << "is 32 Bit OS";return false;
}HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, dwPid);
if (hProcess)
{typedef BOOL(WINAPI * LPEN_ISWOW64PROCESS)(HANDLE, PBOOL);LPEN_ISWOW64PROCESS fnlsWow64Process = (LPEN_ISWOW64PROCESS)GetProcAddress(GetModuleHandleW(L"kernel32"), "IsWow64Process");if (NULL!=fnlsWow64Process){BOOL bIsWow64 = FALSE;fnlsWow64Process(hProcess, &bIsWow64);CloseHandle(hProcess);return !bIsWow64;}
}
return false;
}int main()
{DWORD dwPid = GetCurrentProcessId();bool flag_bit = is64BitProcess(dwPid);cout << flag_bit << endl;//is64BitOS();//std::cout << "Hello World!\n";
}

Windows判断是否为64位程序(C++)相关推荐

  1. MSVCP120D.dll引起的32位和64位程序运行区别

    本人的第一篇技术博客,如有遗漏请见谅. 在没有装vs2013的电脑上(装了vcredist_x86),一个64位应用程序在运行时,弹出0xc000007b错误.而装了vs2013,可以运行.让人摸不着 ...

  2. 说说windows下64位程序和32位程序

    对于两者的区别先不说,先说说两者的影响吧. windows操作系统,尤其是win7下64位和32位的程序对一般用户来说影响都不是很大,只要程序能够正常运行就ok了,不需要关心那么多. 可是对于很多大型 ...

  3. windows下编译64位程序时没有没_WIN32定义

    _WIN32定义的初衷是为了区分16位和32位程序,但是目前很多项目的代码都是使用_WIN32来判定是否是windows平台,所以目前在windows平台下编译32位和64位程序时,编译器都会预定义了 ...

  4. VC程序里判断系统是64位还是32位的正确方法

    VC程序里判断系统是64位还是32位的正确方法 BOOL IsWow64()  {      typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, P ...

  5. 在32位WINDOWS系统上开发64位应用程序

    在32位WINDOWS系统上开发64位应用程序 创建 2011-9-2 有些时候需要开发WINDOWS 64位应用程序,但不想安装64位操作系统,所以需要在32位系统下开发64位应用.其步骤并不复杂. ...

  6. Windows系统判断是否为64位系统(C++)

    调用系统函数GetNativeSystemInfo来获取系统信息 bool is64BitOS() {SYSTEM_INFO cur_system_info;GetNativeSystemInfo(& ...

  7. c++怎么判断系统是64位还是32位

    说起来这个话题,如果我把标题改成"你是怎么判断系统是32位还是64位",估计一下子会有很多技术爱好者撇撇嘴说"不就是打开我的我的电脑,找到属性,点进去看是不是32还是64 ...

  8. php dll是下32还是64位,windows下关于boost 64位和32位库的编译详细介绍

    常用编译命令: cd E:\OpenSource\boost_1_63_0\boost_1_63_0 编译32位库: x86环境下编译得先从开始菜单启动Visual Studio的Visual Stu ...

  9. 32位程序和64位程序

    我们有时候会遇到这样一种情况:我们在32位操作系统上下载了64位版本的程序,却发现无法安装,大家可能会很困惑. 下面就来简单解释一下32位程序与64位程序的具体区别. 我们首先要弄明白的: 1.这里所 ...

最新文章

  1. C++:Lambda函数学习
  2. 101所被《人民日报》点名的大学:低调却颇有实力!
  3. 谷歌跟随微软加入云安全联盟 亚马逊依然游离
  4. python子进程通信_python执行子进程实现进程间通信的方法
  5. Windows XP环境下Apache2.2.21和Tomcat7.0.26下的整合
  6. javaFX的控制台实现
  7. Ajax — 大事件项目(第四天)
  8. 如何用jar命令对java工程进行打包
  9. 忘记commit也会造成select查询的性能问题
  10. 使用JavaScript 修改浏览器 URL 地址栏
  11. 使用Infopath时要注意的有哪些
  12. 优惠券如何引流,如何做好优惠券推广,优惠券正确引流方法
  13. 计算机组成原理——系统总线
  14. Eclipse 无法查看第三方jar包文件源代码解决方法(转载https://www.cnblogs.com/1995hxt/p/5252098.html自己备用)
  15. POI XssfCellStyle背景颜色对照
  16. 小葵花妈妈课堂开课了:《Runnable、Callable、Future、RunnableFuture、FutureTask 源码分析》
  17. supervisor控制台运行出错,BACKOFF Exited too quickly
  18. chromeDriver下载地址
  19. WEB服务器的基本介绍
  20. 想知道手机视频压缩app哪个好用?这几个工具值得一试

热门文章

  1. 从头捋一遍Java项目中的五大设计原则,就不信你学不会!
  2. CLOUD TOOLKIT打包SPRINGCLOUD项目,多模块
  3. Spring框架----自动按照类型注入的Autowired注解
  4. Oier's little dream
  5. @SuppressWarnings(rawtypes) 是什么含义
  6. A water problem (hdu-5832)
  7. dedecms织梦(一)
  8. 线程池的submit和execute方法区别
  9. 最直白的跨域访问原理
  10. JS - this,call,apply