HanDs
NO.2

[Delphi文章] 判断是否是64位操作系统 





学习中请遵循国家相关法律法规,黑客不作恶。没有网络安全就没有国家安全

本站需要登陆后才能查看

作者:不得闲
出处:http://dxsoft.cnblogs.com/

在看一个外国佬的代码的时候,看到一个API函数,然后随手查了查MSDN,原来是新加的用来判断是否是Win64位系统的,于是写了一个函数用来判断是否是64位操作系统:

代码
 function IsWin64: Boolean; 
 var 
    Kernel32Handle: THandle; 
    IsWow64Process: function(Handle: Windows.THandle; var Res: Windows.BOOL): Windows.BOOL; stdcall; 
    GetNativeSystemInfo: procedure(var lpSystemInfo: TSystemInfo); stdcall; 
    isWoW64: Bool; 
    SystemInfo: TSystemInfo; 
 const 
    PROCESSOR_ARCHITECTURE_AMD64 = 9; 
    PROCESSOR_ARCHITECTURE_IA64 = 6; 
 begin 
   Kernel32Handle := GetModuleHandle('KERNEL32.DLL'); 
   if Kernel32Handle = 0 then 
     Kernel32Handle := LoadLibrary('KERNEL32.DLL'); 
   if Kernel32Handle <> 0 then 
   begin 
     IsWOW64Process := GetProcAddress(Kernel32Handle,'IsWow64Process'); 
     GetNativeSystemInfo := GetProcAddress(Kernel32Handle,'GetNativeSystemInfo'); 
     if Assigned(IsWow64Process) then 
     begin 
       IsWow64Process(GetCurrentProcess,isWoW64); 
       Result := isWoW64 and Assigned(GetNativeSystemInfo); 
       if Result then 
       begin 
         GetNativeSystemInfo(SystemInfo); 
         Result := (SystemInfo.wProcessorArchitecture = PROCESSOR_ARCHITECTURE_AMD64) or 
                   (SystemInfo.wProcessorArchitecture = PROCESSOR_ARCHITECTURE_IA64); 
       end; 
     end 
     else Result := False; 
   end 
   else Result := False; 
 end; 

需要注意是GetNativeSystemInfo 函数从Windows XP 开始才有, 而 IsWow64Process 函数从 Windows XP with SP2 以及 Windows Server 2003 with SP1 开始才有。 所以使用该函数的时候最好用GetProcAddress


学习中请遵守法律法规,本网站内容均来自于互联网,本网站不负担法律责任
判断 是否是 6 4 操作系统
#1楼
发帖时间:2016-7-9   |   查看数:0   |   回复数:0
游客组