Detect whether current Windows version is 32 bit or 64 bit Detect whether current Windows version is 32 bit or 64 bit windows windows

Detect whether current Windows version is 32 bit or 64 bit


To check for a 64-bit version of Windows in a command box, I use the following template:

test.bat:

@echo offif defined ProgramFiles(x86) (    @echo yes    @echo Some 64-bit work) else (    @echo no    @echo Some 32-bit work)

ProgramFiles(x86) is an environment variable automatically defined by cmd.exe (both 32-bit and 64-bit versions) on Windows 64-bit machines only.


Here is some Delphi code to check whether your program is running on a 64 bit operating system:

function Is64BitOS: Boolean;{$IFNDEF WIN64}type  TIsWow64Process = function(Handle:THandle; var IsWow64 : BOOL) : BOOL; stdcall;var  hKernel32 : Integer;  IsWow64Process : TIsWow64Process;  IsWow64 : BOOL;{$ENDIF}begin  {$IFDEF WIN64}     //We're a 64-bit application; obviously we're running on 64-bit Windows.     Result := True;  {$ELSE}  // We can check if the operating system is 64-bit by checking whether  // we are running under Wow64 (we are 32-bit code). We must check if this  // function is implemented before we call it, because some older 32-bit   // versions of kernel32.dll (eg. Windows 2000) don't know about it.  // See "IsWow64Process", http://msdn.microsoft.com/en-us/library/ms684139.aspx  Result := False;  hKernel32 := LoadLibrary('kernel32.dll');  if hKernel32 = 0 then RaiseLastOSError;  try    @IsWow64Process := GetProcAddress(hkernel32, 'IsWow64Process');    if Assigned(IsWow64Process) then begin      if (IsWow64Process(GetCurrentProcess, IsWow64)) then begin        Result := IsWow64;      end      else RaiseLastOSError;    end;  finally    FreeLibrary(hKernel32);  end;    {$ENDIf}end;


I tested the solution I suggested in my question:

Tested for Windows Environment Variable: ProgramW6432

If it's non empty then it's 64 bit Windows.W