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

2021-06-21 01:13:45 字數 2048 閱讀 6671

方法一:

對於c#來說,呼叫wmi是一種簡單易行的方式。我們可以用win32_processor類裡面的addresswidth屬性來表示系統的位寬。addresswidth的值受cpu和作業系統的雙重影響。

具體的值如下面的**所示:

32bit os

64bit os

32bit cpu

addresswidth = 32

n/a64bit cpu

addresswidth = 32

addresswidth = 64

可以用下面的c#**得到addresswidth的值

(注意需新增引用system.management)

public

static

string

detect3264()

return

addresswidth;

}

方法二:(需framework4.0+)

bool

type;

type =environment.is64bitoperatingsystem;

console.writeline(type);

如返回值為true則表示是64位,如返回值為false則表示為32位。

方法三:

這個方法也是最直接的方法,但是有條件限制,例用intptr結構的size屬性來檢視系統的位寬

命名空間是system;

前題是程式需要採用any/cpu的方式進行編輯;

正常情況下int的位寬是4位,即是32位作業系統。

if (intptr.size == 8

)else

if (intptr.size == 4

)else

方法四:

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。

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

摘自:

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

方法一 對於c 來說,呼叫wmi是一種簡單易行的方式。我們可以用win32 processor類裡面的addresswidth屬性來表示系統的位寬。addresswidth的值受cpu和作業系統的雙重影響。具體的值如下面的 所示 32bit os 64bit os 32bit cpu address...

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

64位機器可以執行32 64位作業系統,而32位機器只能執行32位作業系統,這樣就有乙個問題,對於乙個64位機器,如何判斷作業系統究竟是32位還是64位呢?總結了一下,基本方法如下 1.linux file sbin init sbin init elf 32 bit lsb executable,...

C 判斷作業系統是32位還是64位的方法

判斷系統是否是64位的方法有很多。對於c 來說,呼叫wmi是一種簡單易行的方式。我們可以用win32 processor類裡面的addresswidth屬性來表示系統的位寬。addresswidth的值受cpu和作業系統的雙重影響。具體的值如下面的 所示 32bit os 64bit os 32bi...