判斷是否是64位作業系統

2021-09-05 22:24:19 字數 1982 閱讀 9042

在看乙個外國佬的**的時候,看到乙個api函式,然後隨手查了查msdn,原來是新加的用來判斷是否是win64位系統的,於是寫了乙個函式用來判斷是否是64位作業系統:

1function

iswin64: boolean;  

2var

3kernel32handle: thandle;  

4iswow64process: 

function

(handle: windows.thandle; 

varres: windows.bool): windows.bool; 

stdcall

;  5

getnativesysteminfo: 

procedure

(var

lpsysteminfo: tsysteminfo); 

stdcall

;  6

iswow64: bool;  

7systeminfo: tsysteminfo;  

8const

9processor_architecture_amd64 =9

;  10

processor_architecture_ia64 =6

;  11

begin

12kernel32handle :

=getmodulehandle(

'kernel32.dll

');  

13if

kernel32handle =0

then

14kernel32handle :

=loadlibrary(

'kernel32.dll

');  

15if

kernel32handle 

<>

0then

16begin

17iswow64process :

=getprocaddress(kernel32handle,

'iswow64process

');  

18getnativesysteminfo :

=getprocaddress(kernel32handle,

'getnativesysteminfo

');  

19if

assigned(iswow64process) 

then

20begin

21iswow64process(getcurrentprocess,iswow64);  

22result :

=iswow64 

andassigned(getnativesysteminfo);  

23if

result 

then

24begin

25getnativesysteminfo(systeminfo);  

26result :

=(systeminfo.wprocessorarchitecture 

=processor_architecture_amd64) 

or27

(systeminfo.wprocessorarchitecture 

=processor_architecture_ia64);  

28end

;  29

end30

else

result :

=false;  

31end

32else

result :

=false;  

33end

;  

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

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

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

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

如何判斷作業系統是64位還是32位 64位wnidows 裡面有個叫wow64的模擬器技術,可以使32位的程式在64位windows上執行。當你想在程式裡面針對32b位 64位系統執行不同 的時候,需要判斷作業系統是32位還是64位。使用 windows api函式 getnativesystemi...

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

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