Currently I am using:
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("Select * FROM WIN32_Processor");
ManagementObjectCollection mObject = searcher.Get();
foreach (ManagementObject obj in mObject)
{
var architecture = obj.GetPropertyValue("Architecture");
}
architecture = 0
This article shows that 0 means x86
The processor that the computer is running is intel core 2 duo E7500
OS is Windows XP 32 bit
CPU-Z shows

Is there a way to determine if a Windows XP computer has a processor that supports 64bit?
It may not be ideal, but it’s relatively straightforward to create a (native) DLL using VC++ or the like and query the processor’s features directly. This method could then be PInvoked from your C# application.
The following C++ method would return
truewhen run on a 64 bit capable processor, andfalseon a 32 bit only processor (whether the OS is 32 or 64 bit):This method can then be used from C# using: