首页 > 代码库 > 检测系统是X86系统,还是X64系统
检测系统是X86系统,还是X64系统
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;
*需要自己先判断是否是WINXP/2003之前的系统
function IsWOW64: BOOL; begin Result := False; if GetProcAddress(GetModuleHandle(kernel32), ‘IsWow64Process‘) <> nil then IsWow64Process(GetCurrentProcess, Result); end;
这是 XE 以后的代码,表示你的 EXE 是 32位的,环境是 64 位的。
如果你的 EXE 是 64位的,就不用判断了,32位系统,无法运行。
检测系统是X86系统,还是X64系统
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。