如何判斷Windows作業系統是64位還是32位

2022-08-19 15:30:11 字數 1590 閱讀 4327

如何判斷作業系統是64位還是32位

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 )

else

另外,windows api 還提供了 iswow64process 函式判斷程式是不是執行在wow64模擬器之上。

**示例:

bool biswow64 = false;

iswow64process(getcurrentprocess(), &biswow64);

需要注意是getnativesysteminfo  函式從windows xp 開始才有, 而 iswow64process  函式從 windows xp with sp2 以及 windows server 2003 with sp1 開始才有。 所以使用該函式的時候最好用getprocaddress。

比較迷惑人的則是biswow64,其實仔細看msdn中的remark,會發現:

因此我們需要分別將我們的程式編譯成win32平台和x64平台的,如果你用visual studio進行編譯,預設安裝則只包含32位的編譯器/鏈結器,即便你是在64位作業系統上安裝,也是一樣的。你需要在vc++節點下勾選x64選項才可以,itanium則需要在server平台下安裝才可勾選。然後在編譯的時候,分別選擇win32和x64進行編譯。

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");

for windows

#include

#include

bool iswow64()

else

}return biswow64;

}int main()

主要是利用了iswow64process,這是乙個windows api,如果程序是執行在64位系統上的32位程式,則返回true,我們用32位方式編譯這個程式並執行,即可判斷作業系統的位數。

程式 判斷Windows作業系統的版本

02 判斷作業系統.cpp 此檔案包含 main 函式。程式執行將在此處開始並結束。include pch.h include include include using namespace std string getsystemname string name 未知作業系統 switch osi...

windows作業系統

1.檢視埠 netstat ano netstat ano find 2檢視程序 tasklist 3.刪除程序 tskill 4.開啟程序管理器 taskmgr 5.ping 6.ipconfig all 7.f 8 cd cd.9.mkdir rmdir linux rm rf 10.dir 列...

判斷作業系統

判斷作業系統.cpp 定義控制台應用程式的入口點。include stdafx.h include void getsystem if i 5 j 0 else if i 5 j 1 else if i 5 j 2 else if i 6 j 0 else if i 6 j 1 int tmain ...