How to determine whether an Windows OS is 64 bit or not from Registry Editor

Question

I need to run a batch file to check whether an operating system is 32 bit or 64 bit .This need to be checked in registry only .I am able to check for 32 bit OS However I never checked for 64 bit OS .So can anyone pls guide me how to know whether the OS is 64 bit or not ?

We need to retrieve from Registry but not basing on the Hardware or the Processor Architecture .Is there any dword value please send me the response

Answers

// can't call IsWow64Process on x32, so first look up the entry point in kernel32 LPFN_ISWOW64PROCESS fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(GetModuleHandle ("kernel32"),"IsWow64Process"); // if we have an entry point for IsWow64Process, we can call it if (NULL != fnIsWow64Process) { if (!fnIsWow64Process(GetCurrentProcess(),&bIsWow64)) { // handle error } } return bIsWow64;}

All replies

I'm not sure how to do this from the registry but while researching for another post I figured out how to do this by querying WMI from PowerShell. This might work nicely for you if you're writing a script. The PowerShell script is:

Get-WmiObject -class "Win32_Processor" -property "AddressWidth"

If the AddressWidth is "32" then you're on a 32-bit operating system. If the AddressWidth is "64" then you're on a 64-bit operating system.

// can't call IsWow64Process on x32, so first look up the entry point in kernel32 LPFN_ISWOW64PROCESS fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(GetModuleHandle ("kernel32"),"IsWow64Process"); // if we have an entry point for IsWow64Process, we can call it if (NULL != fnIsWow64Process) { if (!fnIsWow64Process(GetCurrentProcess(),&bIsWow64)) { // handle error } } return bIsWow64;}

Caution: The below only shows whether or not your system is capable of running an x64 OS but that doesn't mean you're running x64.

Get-WmiObject -class "Win32_Processor" -property "AddressWidth"

If no one has a better solution to determine the running os as being x64 then I'm tempted to just look and see if the c:\program files (x86) folder exists and if so assume it's 64-bit. Or maybe just parse the boot.ini.