判断当前系统是不是x64?看看它们是怎么做的?

作为一名程序员,从前辈实际编程中获取经验是十分有效的一种学习途径。那让我们看看前辈们是如何判断当前系统是x64还是x32的:

VirtualKD

为了调试虚拟机内的操作系统,所以需要按照不同系统版本提供相应的驱动.笔者它在2.8.0.1版本使用了GetVersionEx这个函数来判断系统.在它旁边我们发现如图的内容:
Win8不兼容

奇虎360安全软件64位安装包判断当前环境是否为64 位:

经过笔者的分析发现奇虎的程序员是通过直接查询注册表的方式来进行判断的:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
这里存放着系统的版本信息。

我所得知的另一种方式是:
    SYSTEM_INFO sysInfo;
    GetNativeSystemInfo(&sysInfo);

    if (sysInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64)
    {
        cout<<"64"<<endl;
    }
    else
    {
        cout<<"32"<<endl;
    }

看雪上有一人发帖讨论一个问题:在不启动系统的情况下,如何判断操作系统是32位还是64位?
摘取几个有趣的答案:

ttuiop:
kernel32.dll IsWow64Process

LiXMX:
最简单的就是看看系统安装分区里面是不是有两个 “Program Files” 目录,有的话就是64位系统。。。
瀚海云烟认为:
判断文件夹法(可能被忽悠):
Program Files ,是否存在 Program Files (x86)
X:\windows\system32, 是否存在 X:\windows\SysWOW64
判断PE文件法(这个比较可靠):
判断X:\windows\explorer.exe 是 PE64还是 PE32, 别人不可能故意替换这个文件,否者系统无法启动桌面.
判断X:\Windows\System32\ntoskrnl.exe 是不是PE64格式

你现在是不是和笔者一样又有一些新思路呢?HaveFun.

版权声明:本文为博主原创文章,未经博主允许不得转载。

你可能感兴趣的:(X64)