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.

