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%
Method 1:
(Two step Validation with PROCESSOR_ARCHITECTURE
and PROCESSOR_ARCHITEW6432
)
set Arch=x64
if "%PROCESSOR_ARCHITECTURE%" == "x86" (
if not defined PROCESSOR_ARCHITEW6432 set Arch=x86
)
if "%Arch%" == "x64" (
msg * "yessss"
) else (
msg * "noooo"
)
Method 2:
reg Query "HKLM\Hardware\Description\System\CentralProcessor\0" | find /i "x32" > NUL && set OS=32BIT || set OS=64BIT
if %OS%==32BIT echo "YESSS"
if %OS%==64BIT echo "NOOO"
source: https://superuser.com/a/293143/249349
Apologize for the grave dig. However, the processor architecture environmental variable is accessible via powershell ...
$env:PROCESSOR_ARCHITECTURE
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
There is even a more simple solution using cmd:
ECHO %PROCESSOR_ARCHITECTURE%
You can also get this from an environment variable, PROCESSOR_ARCHITEW6432
. See this article for more info.
I found on my Win7HB x64 system:
msgbox wscript.createobject("wscript.shell").environment("system").item("processor_architecture") ' always "AMD64"
msgbox wscript.createobject("wscript.shell").environment("process").item("processor_architecture") ' "AMD64" if launched via System32, "x86" if launched via SysWOW64
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