如何判断系统是否64位系统

随着64位系统的流行,在程序开发过程中,经常需要根据不同位数的操作系统做不同的操作,这就需要在程序运行过程中判断操作系统位数。

在64位系统Kernel32核心动态库中,提供了 IsWow64Process API函数,而在32系统中则没有,我们可以通过这个函数来进行判断,下面是判断方法:

    BOOL IsX64()
    {
#ifdef _WIN64
        return TRUE;
#else
        typedef BOOL (WINAPI *PFIsWow64Process) (HANDLE, PBOOL);
        BOOL bIsWow64 = FALSE;
        PFIsWow64Process fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress( GetModuleHandle(_T("kernel32")),"IsWow64Process");
        if (NULL != fnIsWow64Process)
        {
            fnIsWow64Process(GetCurrentProcess(),&bIsWow64);
        }
        return bIsWow64;
#endif
    }

每天进步一点点,小伙伴们加油!

时间: 2024-08-18 04:38:58

如何判断系统是否64位系统的相关文章

32位系统与64位系统

64位系统已经非常普及了,因此我们写代码的时候,了解32位与64位系统的编码差异就显得很重要了.我用的计算机是win10,64位,之前对于任务管理器里的进程32和64分不清,而且对于System32与SestemWow64两个文件夹也时常搞错,今天看书查资料才终于弄懂一些. 64位系统有两个System目录,C:\Windows\System32和C:\Windows\SysWOW64,前者主要包含64位系统文件,后者目录下主要是32位系统文件,这个跟它们名字里的数字刚好是相反的(困扰我好长时间

32位系统与64位系统的区别

CPU一次处理数据的能力是32位还是64位 32操作系统 64位操作系统 地址总线 32位 64位 内存寻址空间(内存大小) 2的32次方bit=4G 2的64次方约为1亿GB 设计初衷 普通用户 满足机械设计和分析.三维动画.视频编辑和创作,以及科学计算和高性能计算应用程序等领域中需要大量内存和浮点性能的客户需求 运算速度不同 32位(需要四个指令,一次提取4个字节的数据) 64位CPU GPRs(General-Purpose Registers,通用寄存器)的数据宽度为64位,64位指令集

判断是否是64位系统(之前那个是判断是否是64位进程不一样。注意区分)

#pragma region Includes#include <stdio.h>#include <windows.h>#pragma endregion #pragma region Is64BitOperatingSystem (IsWow64Process) ////   FUNCTION: DoesWin32MethodExist(PCWSTR, PCSTR)////   PURPOSE: The function determins whether a method e

C#判断系统是64位还是32位 支持.net4.0以前的版本

C#判断系统是64位还是32位的时候引用了一串代码,这个代码是从园子里面其他博文中转载过来的,引入自己的项目中发现无法使用,在引用了相应的命名空间之后还是提示: "未能找到类型或命名空间名称"ConnectionOptions"(是否缺少 using 指令或程序集引用?)": 除了使用 using System.Management; 还需要在解决方案的"引用"中引用才能够起作用,   private string Distinguish64or

判断是64位操作系统还是32位系统

1.IsWow64Process 确定指定进程是否运行在64位操作系统的32环境(Wow64)下. 语法 BOOL WINAPI IsWow64Process( __in HANDLE hProcess, __out PBOOL Wow64Process ); 参数 hProcess 进程句柄.该句柄必须具有PROCESS_QUERY_INFORMATION 或者 PROCESS_QUERY_LIMITED_INFORMATION 访问权限 Wow64Process 指向一个bool值, 如果该

C# 32位程序在64位系统下注册表操作

在64位的Windows操作系统中,为了兼容32位程序的运行,64位的Windows操作系统采用重定向机制.目的是为了能让32位程序在64位的操作系统不仅能操作关键文件文夹和关键的注册表并且又要避免与64位程序冲突 相关资料请查看32位程序在64位系统下运行的重定向机制 下面是以获取操作系统安装密匙KEY的案例: using System; using System.Collections.Generic; using System.Linq; using System.Text; using

Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程)

Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程) 声明:本教程在参考了以下博文,并经过自己的摸索后实际操作得出,本教程系本人原创,由于升级后的cocos2d-x有了一些变化,目前的博文还没有关于Cocos2d-x 2.2.1最新版搭建Android交叉编译环境组建的说明,所以我这几天研究了一下,现在将具体的搭建方法分享出来,也给自己学习Cocos2d-x做个笔记. 参考博文: http://www.cnblogs.com/lhming

【转载】GetAdaptersInfo函数在64位系统上返回ERROR_NOACCESS的有关问题

From:http://www.educity.cn/wenda/351190.html GetAdaptersInfo函数在64位系统下返回ERROR_NOACCESS的问题 实际应用中一个程序在长时间运行后内存占用较高时发生崩溃,从dump信息中,发现GetAdaptersInfo函数返回了一个奇怪的错误码998(ERROR_NOACCESS),百度搜索不到相关的信息.MSDN上GetAdaptersInfo函数的错误码正常情况下只有5种.并且一共发生的两次崩溃都出现在一台Win7 64位机

C# 64位系统 注册表的读写

64位系统,读取时是要有区别的,写入时没有问题.这里的代码时通用的,已经内部判断当前系统的位数. 1 /// <summary> 2 /// 注册表 3 /// </summary> 4 public class RegistryKey64 5 { 6 #region 静态 7 static IntPtr GetHiveHandle(RegistryHive hive) 8 { 9 IntPtr preexistingHandle = IntPtr.Zero; 10 11 IntP