判断系统是64位还是32位的正确方法

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
在很多网站上都贴有这种方法,可惜都无法区别32位或64位,本身思路是正确的,但是在实现的细节上使用错误:
BOOL IsWow64()
{
    typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
    LPFN_ISWOW64PROCESS fnIsWow64Process;
    BOOL bIsWow64 = FALSE;
    fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(
GetModuleHandle("kernel32"),"IsWow64Process");
    if (NULL != fnIsWow64Process)
    {
        if (!fnIsWow64Process(GetCurrentProcess(),&bIsWow64))
        {
            return FALSE;
        } else
            return TRUE;
    }
    return bIsWow64;
}
正确的方法应该是这样:
BOOL IsWow64()
{
    typedef BOOL (WINAPI
*LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
    LPFN_ISWOW64PROCESS fnIsWow64Process;
    BOOL bIsWow64
= FALSE;
    fnIsWow64Process
= (LPFN_ISWOW64PROCESS)GetProcAddress( GetModuleHandle("kernel32"),"IsWow64Process");
   
if (NULL != fnIsWow64Process)
    {
        fnIsWow64Process(GetCurrentProcess(),
&bIsWow64);
    }
   
return bIsWow64;
不是判断函数地址是否有效,而是判断输出型参数bIsWow64的值.
VC程序里判断系统64还是32正确方法. 在很多网站上都贴有这种方法,可惜都无法区别3264,本身思路是正确的,但是在实现的细节上使用错误:BOOL IsWow64() {     typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);     LPFN_ISWOW64PROCESS fnIsWow64Process;     BOOL bIsWow64 = F 阅读详情

相关推荐

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

BOOL IsWow64()  {      typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);      LPFN_ISWOW64PROCESS fnIsWow64Process;      BOOL bIsWow64 = FALSE;      fnIsWow64Process = (LPFN_ISWOW64PROC

蜗牛也是牛,总有一天我有属于我的天…… 451

获取注册表路径或判断64还是32

RegistryKey rsg = null;                    //声明变量             string win3264 = "";             try             {                                               int win = System.IntPtr.Size; //Syst

【YoTi】女程序员的历史 1739

64Windows系统32Python, 判断系统32还是64

正确方法: A: ) def is64Windows(self): return 'PROGRAMFILES(X86)' in os.environ def getProgramFiles32(self): if self.is64Windows(): return os.environ['PROGRAMFILES(X86)'] e...

weixin_30644369的博客 1277

计算机哪里看到32还是64,如何看电脑是32还是64

哪里看电脑系统32还是64?windows系统3264两种不同的数,在安装软件的时候,也会有所选择,不少朋友不知道怎么查看自己电脑的数Win10查看方法方法一:1、在桌面上,鼠标右键【此电脑】,选择【属性】,没有此电脑?查看:w10我的电脑在哪里;2、打开win10系统属性,查看【系统类型】,64操作系统表示6432操作系统表示32方法二:1、使用Win+R组合键调...

weixin_34254464的博客 1643

如何判断64系统还是32系统

在很多网站上都贴有这种方法,可惜都无法区别3264,本身思路是正确的,但是在实现的细节上使用错误:BOOL IsWow64(){ typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL); LPFN_ISWOW64PROCESS fnIsWow64Process; BOOL bIsWow64 = FALSE...

weixin_30505485的博客 84

检测Windows操作系统64还是32

错误的做法: bool IsOs64Bit() { SYSTEM_INFO si = { 0 }; ::GetSystemInfo(&si); if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) { return true; } return false;

thanklife的专栏 886

台式计算机是3264,小编教你怎么看电脑是32还是64

用电脑的人都知道电脑处理器(CPU)分为326432处理器只能安装32系统64处理器则支持安装3264系统,那如果要安装系统的话,要怎么看电脑CPU是32还是64的呢?那么下面小编教大家查看电脑CPU是32还是64。有网友问到,新买的电脑要安装系统,但是不知道电脑的cpu是32还是64的,以至于不知道该怎么办。如何查看电脑32还是64呢?要查看电脑需要安装的系...

weixin_42489104的博客 2947

Shell脚本中,如何判断Linux系统32还是64

一行就能搞定,输出32或者64 可以用“getconf WORD_BIT”和“getconf LONG_BIT”获得word和long的数,64系统中应该分别得到3264。 参考代码如下: ldconfig if [ $(getconf WORD_BIT) = '32' ] && [ $(getconf LONG_BIT) = '64' ] ; then ln -...

weixin_34347651的博客 612

怎样才能把java32弄到64啊_如何使用Java来确定Windows的3264架构?

免责声明:请不要把它否决为一个重复的答案,因为我想和大家分享我的Java代码解决方案(一个同样是本地代码)。我想把詹姆斯·范·赫斯先生的回答加起来;由于os.arch属性:System.getProperty("os.arch");返回JRE的,这实际上非常有用。从文章中:在代码中,首先需要检查intptr的大小,如果它返回8,那么您将在64操作系统上运行。如果它返回4,那么您正在运行一个32...

weixin_42498989的博客 745

C#判断操作系统32还是64

用程序判断操作系统32还是64,可能第一反应是用以下的这种方式来判断:sizeof(int)*8 或 System.IntPtr.Size*8 这个确实是个好的办法,但是也有其的局限性,只有当你的程序是用“Any Cpu”的编译模式的时候这段判断语句才有用, 当你的用了固定的编译模式,比如“x86”,那么在这种编译模式下,不论你的系统32还是64,上面的语句都只会输出32,、 “

MasSoft 1996
下一篇: windows进程通信之共享内存那点事
delete635
博客等级 码龄18年 2粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值