A. Windows has a number of useful environment variables to identify information about the operating environment, but some don't return the data that the name would imply. The environment variable PROCESSOR_ARCHITECTURE would seem to return the processor architecture of the hardware the OS is running on, but this isn't actually the case.
If I look at PROCESSOR_ARCHITECTURE on my 64-bit Intel box I get the following:
C:\>echo %PROCESSOR_ARCHITECTURE% AMD64
AMD64? Remember that people commonly say 64-bit and x64, but the actual architecture specification is AMD64 on both AMD and Intel processors. So what PROCESSOR_ARCHITECTURE actually returns is the architecture version of the OS instance build, which will be AMD64 or x86.
There is another caveat though. If you're running a 32-bit application on a 64-bit OS, the application is running in Windows on Windows 64 (WoW64, the 32-bit emulation environment). If you query PROCESSOR_ARCHITECTURE, you'll get a value of x86. You can easily see this by viewing the PROCESSOR_ARCHITECTURE variable from within the SYSWoW64 cmd.exe, as shown here.
Click to expand.
- Q. Why are the 64-bit versions of Windows so much bigger than the 32-bit versions?
- What features do the 64-bit versions of the Windows family provide, and will I be able to run my 32-bit applications on a 64-bit platform?
- Q. Why are 64-bit domain controllers (DCs) better than 32-bit DCs?
- Q. Does Windows Virtual PC in Windows 7 support 64-bit guest OSs?
Check out hundreds more useful Q&As like this in John Savill's FAQ for Windows. Also, watch instructional videos made by John at ITTV.net.