Q. The PROCESSOR_ARCHITECTURE environment variable isn't returning the value I expect. What's wrong?

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:


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.
Hide comments


  • Allowed HTML tags: <em> <strong> <blockquote> <br> <p>

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.