Vb6 检查操作系统和处理器是32位还是64位?
我想用vb6代码检查操作系统是32位还是64位,处理器是32位还是64位。所以请帮我获取这些代码。 在vb.net中,我可以使用Environment.Is64BitOperatingSystem属性,它仅在.net 4.0及更高版本中工作。Vb6 检查操作系统和处理器是32位还是64位?,vb6,wmi,Vb6,Wmi,我想用vb6代码检查操作系统是32位还是64位,处理器是32位还是64位。所以请帮我获取这些代码。 在vb.net中,我可以使用Environment.Is64BitOperatingSystem属性,它仅在.net 4.0及更高版本中工作。 但是如何在vb6中获取这些信息呢?对于CPU,您可以使用WMI并获取AddressWidth。 可以找到VBScript的示例您可以尝试WMI类的DataWidth或AddressWidth属性,在32位处理器上,值为32,在64位处理器上,值为64。操作
但是如何在vb6中获取这些信息呢?对于CPU,您可以使用WMI并获取AddressWidth。
可以找到VBScript的示例您可以尝试WMI类的
DataWidth
或AddressWidth
属性,在32位处理器上,值为32,在64位处理器上,值为64。操作系统体系结构
获取它的一种方法是使用GetNativeSystemInfo
WinAPI函数。它覆盖着一层薄纱
操作系统架构也可以通过WMI获得,以防您希望以类似的方式实现这两个目标。在Windows Vista和更新的操作系统中,可以查询Win32\u OperatingSystem
类并分析OSArchitecture
属性()。遗憾的是,此属性在Windows XP和早期版本中不存在。在这些系统上,可以查询Win32\u ComputerSystem
类并分析SystemType
属性()
回答这两个问题最直接的方法似乎是使用WMI类
操作系统是32位还是64位? 对于操作系统,可以检查
AddressWidth
属性:
地址宽度
在32位操作系统上,值为32,而在64位操作系统上,值为32
操作系统是64
相关VB6代码为:
Public Function GetOsBitness() As String
Dim ProcessorSet As Object
Dim CPU As Object
Set ProcessorSet = GetObject("Winmgmts:"). _
ExecQuery("SELECT * FROM Win32_Processor")
For Each CPU In ProcessorSet
GetOsBitness = CStr(CPU.AddressWidth)
Next
End Function
Public Function GetCpuBitness() As String
Dim ProcessorSet As Object
Dim CPU As Object
Set ProcessorSet = GetObject("Winmgmts:"). _
ExecQuery("SELECT * FROM Win32_Processor")
For Each CPU In ProcessorSet
GetCpuBitness = CStr(CPU.DataWidth)
Next
End Function
处理器是32位还是64位? 对于处理器,可以检查
DataWidth
属性:
DataWidth
在32位处理器上,该值为32,在64位处理器上为
64
相关VB6代码为:
Public Function GetOsBitness() As String
Dim ProcessorSet As Object
Dim CPU As Object
Set ProcessorSet = GetObject("Winmgmts:"). _
ExecQuery("SELECT * FROM Win32_Processor")
For Each CPU In ProcessorSet
GetOsBitness = CStr(CPU.AddressWidth)
Next
End Function
Public Function GetCpuBitness() As String
Dim ProcessorSet As Object
Dim CPU As Object
Set ProcessorSet = GetObject("Winmgmts:"). _
ExecQuery("SELECT * FROM Win32_Processor")
For Each CPU In ProcessorSet
GetCpuBitness = CStr(CPU.DataWidth)
Next
End Function
在Windows Xp 32b上,Win32_处理器.AddressWidth始终返回32。请参阅文章了解详细信息尝试以下操作:您可以查询Win32_OperatingSystem类的OSArchitecture属性。那是不对的<如果您在64位处理器上运行32位操作系统,则代码>地址宽度实际上是32。我认为我的答案是正确的。地址宽度没有根据指定进程是32位还是64位,而是根据Win32中的“体系结构”来指定处理器体系结构。@winman我做了更多的测试,你是正确的。我从这篇文章中删除了与CPU相关的部分(因为它确实是错误的),并给出了不同的答案: