views:

1820

answers:

4

I am trying to retrieve the environment variable to detect whether the system is 32 or 64 bit. But on 64 bit server the environment variable %processor_architecture% is returning x86 instead of AMD64.

Does anyone has any clue about this?

+2  A: 

AMD64 is a brand of CPU which is based on the x86 architecture. x86-64 more precisely, which is the 64-bit extension of x86.

This also relates to bobince's answer.

This Knowledge Base article shows you how to determine if your system is 32-bit or 64-bit

Dan McGrath
So Is there anyway to find out whether the system is 64 or 32 using batch file.
alice7
Yes. Read here http://support.microsoft.com/kb/556009
Dan McGrath
This really helps.
alice7
A: 

Are you actually running a 64-bit version of Windows? If you are running 32-bit Windows on a 64-bit-capable CPU, you will still get x86.

bobince
I am actually running 64 bit version. I can see that from the My COmputer properties.
alice7
+2  A: 

You may be getting the wrong environment variable. If your application is a 32-bit application running on a 64-bit OS the process version of this environment variable will return x86. If you want to find the architecture of the machine, you can grab it from the following registry entry:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment\PROCESSOR_ARCHITECTURE

Or if you're using .NET, then you can use this call to get it:

string arch = System.Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE", 
  EnvironmentVariableTarget.Machine);

From the command line you can try this:

reg query "HKLM\System\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE

Gerald
I just tried this and it is working. Thanks so much for your help.
alice7
+1  A: 

You can also get this from an environment variable, PROCESSOR_ARCHITEW6432. See this article for more info.

Patrick Cuff
More information about the same stuff: http://msdn.microsoft.com/en-us/library/aa384274(VS.85).aspx
total