[Windows编程] 如何判断操作系统是64位还是32位

vc编程判断运行时os是32位还是64位 windows操作系统有32位和64位两种。 一个程序如何在运行时判断所运行的系统是32位的还是64位的? 64位操作系统上可以运行32位和64位程序。 vs2013采用Visual Studio 2013 - Windows XP (v120_xp)平台工具集编译的exe程序,既可以运行在32位操作系统上,也可以在64位操作系统上运行。通过sizeof(int *)的值是4或8不能判断所运行 阅读详情

64位Wnidows 里面有个叫Wow64 的模拟器技术,可以使32位的程序在64位Windows 上运行。 当你想在程序里面针对32b位/ 64位系统执行不同代码的时候, 需要判断操作系统是32位还是64位。 使用 Windows API函数 GetNativeSystemInfo 可以获得这个信息。

 

代码示例:

 

SYSTEM_INFO si;
GetNativeSystemInfo(&si);

if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 ||

  si.wProcessorArchitecture != PROCESSOR_ARCHITECTURE_IA64 )

{

    //64 位操作系统

}

else

{

    // 32 位操作系统

}

 

 

另外,Windows API 还提供了 IsWow64Process 函数判断程序是不是运行在Wow64模拟器之上。

 

代码示例:

 

BOOL bIsWow64 = FALSE;
IsWow64Process(GetCurrentProcess(), &bIsWow64);


需要注意是GetNativeSystemInfo  函数从Windows XP 开始才有, 而 IsWow64Process  函数从 Windows XP with SP2 以及 Windows Server 2003 with SP1 开始才有。 所以使用该函数的时候最好用GetProcAddress。

 

typedef void (WINAPI *LPFN_PGNSI)(LPSYSTEM_INFO);

typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);

 

LPFN_PGNSI pGNSI = (LPFN_PGNSI ) GetProcAddress(

       GetModuleHandle(TEXT("kernel32.dll")),  "GetNativeSystemInfo");

LPFN_ISWOW64PROCESS  fnIsWow64Process = (LPFN_ISWOW64PROCESS) GetProcAddress(
       GetModuleHandle(TEXT("kernel32")),"IsWow64Process");

 

 

 >> 原创文章的版权属于作者,转载请注明出处和作者信息(http://blog.youkuaiyun.com/WinGeek/), 谢谢。 <<

C++ 判断64位和32位系统 {32位系统上,指针和long类型都是32位;而在64位系统上,指针和long类型都是64位的。编程序的时候注意这两种类型和int等类型强制转换时会和32位系统不一样。其他方面没有大的区别} #include typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);BOOL IsWow64(){  LPFN_ISWOW6 阅读详情

相关推荐

pb判定是否64位操作系统

Function Boolean Iswin64bits() LIBRARY "winis64bits.dll" ALIAS FOR "Iswin64bits" if Iswin64bits() then messagebox('提示','64位操作系统') else messagebox('提示','32位操作系统') end if

检测windows 32位程序是否运行在64位系统上

<br />摘自MSDN的IsWow64Process说明<br /> <br />#include <windows.h> #include <stdio.h> typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL); LPFN_ISWOW64PROCESS fnIsWow64Process; BOOL IsWow64() { BOOL bIsWow64 = FALSE; fnIsWow64Process = (L

飞空静渡 1473

putty.zip 32位 & 64位 win环境下安装程序

附件中为putty32位和64位WIN下两个安装程序,直接点击安装便可使用。putty是一款终端仿真程序,支持SSH(SSH1和SSH2)以及Telnet和rlogin协议,putty页面十分小巧,用于连接运行包括Windows、UNIX和VMS在内的远程系统的理想工具。

【Windows编程】如何判断操作系统是64位还是32位

我为我基础知识掌握的薄弱,感到深深的“折服”。感觉从知识体系的掌握上就有问题!!需要探索性的改进自身的知识架构。加油吧……   一,不同位数操作系统下类型简介   类型 32位操作系统(字节) 64位操作系统(字节) char 1 1 short 2 2 int 4 4 long 4 8 long  lo

小田的专栏 7307

CocosCreator3.8实战指南:动态字体与位图字体性能优化技巧

本文深入解析CocosCreator3.8中系统字体、动态字体(TTF)与位图字体(FNT)的核心差异与性能表现。针对动态字体运行时解析开销大、内存占用高的痛点,提供了字体子集化、共享资源等优化技巧;同时详细介绍了位图字体制作流程及其在渲染速度、内存可控性上的绝对优势,并给出跨平台场景下的字体选型与优化策略,帮助开发者有效提升游戏性能。

weixin_29006701的博客 563

MATLAB实战:蓝牙GFSK调制解调全流程解析(附误码率优化技巧)

本文深入解析了蓝牙GFSK调制解调在MATLAB中的全流程实现,包括高斯滤波器设计、调制解调技术及误码率优化技巧。通过实战案例和代码示例,帮助工程师提升蓝牙通信系统的性能表现,特别是在降低误码率方面的有效方法。

weixin_29046035的博客 277

windows编程--如何判断操作系统是64位还是32位

64位Wnidows 里面有个叫GetNativeSystemInfo 可以获得这个信息。   代码示例: SYSTEM_INFO si;  GetNativeSystemInfo(&si);  if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 ||         si.wProcess

thanklife的专栏 1091

嵌入式开发也玩“全家桶”?手把手教你用CLion+PyOCD调试APM32,比OpenOCD更简单

本文详细介绍了如何使用CLion和PyOCD组合进行APM32嵌入式开发,提供从环境配置到实战调试的完整指南。相比传统工具如Keil和OpenOCD,这套方案更轻量、易用,特别适合现代开发者需求,涵盖CMake配置、PyOCD调试技巧及常见问题解决。

weixin_42543046的博客 463

重启服务器不只是按电源键:三种方式选择与避坑指南

在服务器运维中,系统状态异常、内存泄漏和配置未生效是常见问题,而重启服务器作为一种基础操作,能通过重置内存和进程状态快速恢复服务。其原理是清除累积的脏状态,但需区分软重启、硬重启和强制重启的适用场景与风险。技术价值在于以低成本恢复可用性,应用场景涵盖日常维护、故障恢复和配置更新。合理运用重启策略能避免数据损坏和服务中断,本文深入探讨重启服务器的机制、实操要点与常见问题排查,帮助读者掌握这一关键运维技能。

weixin_33836874的博客 375

数据埋点系列 3|数据质量保证:验证、清洗与管理

数据质量管理是一个持续的过程,需要技术和组织文化的共同支持。通过本文,我们深入探讨了数据质量保证的各个方面,从基本的验证和清洗技术,到高级的监控和自动化策略。主动的而非被动的自动化的而非手动的持续的而非一次性的全面的而非局部的随着数据在决策中的作用越来越重要,确保数据质量将成为每个数据驱动型组织的核心竞争力。通过实施本文中讨论的策略和技术,你将能够建立一个强大的数据质量保证体系,为你的组织带来更可靠、更有价值的数据洞察。

一个8年大数据开发工程师的碎碎念 1464

【FOC无刷电机控制】六步换向、FOC,STM32cubemx从零开始搭建BLDC六步换相代码、FOC代码(基于霍尔传感器)

FOC、六步换相,无刷电机控制

xifan的博客 3万+

得到Windows的版本及平台:Win32(x86), Win64 (x64)还是Win64(IA64)

之所以要写这篇文字,是在做一个安装程序时发现要探测Windows版本信息格外复杂,比如想根据平台不同可选择不同的安装文件,运行在x86平台上的Windows 32bit OS只能安装32bit文件,而运行在x64平台上的Windows 64bitOS则可以选择安装32bit或64bit(x64),但是运行在x64平台上的Windows 32bitOS又只能安装32bit了,最后,运行在

3116

基于Python的信用卡欺诈检测机器学习案例报告

当今时代,在线支付已成为一种高效便捷的支付方式,我们可以突破时间和空间的限制,输入我们的信用卡各项信息就可以完成在线支付。但随之而来的是这种支付方式也具备一定的风险性,我们无法辨别对方是否是恶意套取我们资金的非法分子。当信用卡信息数据泄露导致金钱失窃并最终失去客户忠诚度和公司声誉时,组织、消费者、银行和商家都会面临风险。2017 年,未经授权的信用卡操作达到了惊人的 1670 万受害者。此外,据美国联邦贸易委员会 (FTC) 报告,2017 年信用卡欺诈索赔数量比上一年高出 40%。

weixin_45673389的博客 6693

windows linux 宏,linux, windows, mac, ios等平台GCC预编译宏判断

写跨平台c/c++程序的时候,需要搞清各平台下面的预编译宏,区分各平台代码。而跨平台c/c++编程,GCC基本在各平台都可以使用。整理了一份各平台预编译宏的判断示例。需要注意几点:* windows32/64平台_WIN32都会被定义,而_WIN64只在64位windows上定义,因此要先判断_WIN64* 所有的apple系统都会定义 __APPLE__,包括MacOSX和iOS* TARGET...

weixin_39969298的博客 612

概念解析 | 事件相机的原理 (含仿真代码)

在我们熟悉的世界里,传统相机就像一个勤勉的绘画师,每隔固定的时间就为我们勾勒出一幅完整的画面。但是,大自然中有太多瞬息万变的精彩场景,这种"定时绘画"的方式往往难以捕捉。于是,一种全新的"观察者"应运而生 -事件相机(Event Camera)。事件相机,就像是一群极其敏感的"像素哨兵",它们不再按部就班地等待指令,而是主动感知周围的变化,只有在光线强度发生显著变化时才会发出信号。这种革命性的设计,让事件相机拥有了传统相机难以企及的优势:超高的时间分辨率、极低的延迟、宽广的动态范围,以及出色的能效比。

NLOS的博客 1422

三菱FX5U系列PLC与汇川IT6000系列触摸屏进行MODBUS TCP通信的具体方法

三菱FX5U系列PLC与汇川IT6000系列触摸屏进行MODBUS TCP通信的具体方法

Robot_PLC_HMI_Automation 6514

在Windows系统中配置32位和64位的GCC编译环境

在Windows系统中配置32位和64位的GCC编译环境

xiangru的博客 2992

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

上一篇: WinDBG 技巧:设断点命令详解(bp, bu, bm, ba 以及bl, bc, bd, be)
下一篇: [编程技巧] 巧用CPU缓存优化代码:数组 vs. 链表
西塞安全
博客等级 码龄20年 980粉丝 164原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值