在看乙個外國佬的**的時候,看到乙個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...