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.



Related Reading:

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.