32bit vs 64bit Report

I've been seeing this question come up over and over again in various forums, and I wanted a definitive answer for myself, using the least amount of data points.  So, looking at a 64bit os on x64, and 32-bit os on x86, and 32-bit os on x64, this is what I've seen:

64bit on x64processor:
win32_computersystem.systemtype = x64-based pc
win32_processor.addresswidth = 64
win32_processor.architecture = 9
win32_processor.datawidth = 64

32bit on x86processor:
win32_computersystem.systemtype = x86-based pc
win32_processor.addresswidth = 32
win32_processor.architecture = 0
win32_processor.datawidth = 32

32bit on x64processor:
win32_computersystem.systemtype = x86-based pc
win32_processor.addresswidth = 32
win32_processor.architecture = 9
win32_processor.DataWidth = 64

Based on this data, to me the easiest to tell x86 os & 64-bit processor is this:

select sys.netbios_name0,
case when pr.addresswidth0 = 64 then '64bit OS'
when pr.addresswidth0=32 then '32bit OS'
end as [Operating System Type],
case when pr.addresswidth0=32 and pr.DataWidth0=64 then '*'
end as [32-bit OS on x64 processor]
from v_r_system sys
join v_gs_processor pr on sys.resourceid=pr.resourceid

which would result in a report similar to this, there is 1 computer which is a 32bit os loaded on a 64-bit capable computer.

If it's irrelevant to you which computers might be x86 running on x64-capable computers, you could just report on addresswidth0=32 or 64. 

Published Tuesday, June 23, 2009 10:03 PM by skissinger
Filed under:

Comments

No Comments