我想VB6代码来检查操作系统是32位或64位,也就是处理器的32位或64 bit.So请帮助我获得这些代码。 在vb.net我可以使用Environment.Is64BitOperatingSystem属性和它的作品只是在.NET 4.0及以上。 但是,怎样才能在VB6这些信息?
Answer 1:
对于CPU,你可以使用WMI,并得到AddressWidth。 VBScript中的一个样本,可以发现这里
Answer 2:
最直接的方式来回答这两个问题似乎是使用Win32_Processor WMI类。
是操作系统的32位或64位?
对于操作系统可以检查AddressWidth
属性:
AddressWidth
在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
是处理器的32位或64位?
对于处理器可以检查DataWidth
属性:
DataWidth
在32位处理器,该值是32和在64位处理器是64。
相关VB6的代码是:
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
Answer 3:
可以尝试DataWidth
或AddressWidth
所述的性质Win32_Processor
WMI类,在32位处理器,该值是32和在64位处理器是64。
Answer 4:
操作系统架构
获得它的方法之一是使用GetNativeSystemInfo
WinAPI的功能。 它是覆盖在链接的问题 。
OS架构可以通过WMI也可以得到,如果你想达到类似的方式这两个目标。 在Windows Vista和更新的操作系统可以查询Win32_OperatingSystem
类和分析OSArchitecture
财产( MSDN )。 可悲的是,这个属性不会在Windows XP和更早版本存在。 在这些系统中的一个可查询Win32_ComputerSystem
类和分析SystemType
属性,而不是( MSDN )。
Public Function GetOsArchitecture()
If IsAtLeastVista Then
GetOsArchitecture = GetVistaOsArchitecture
Else
GetOsArchitecture = GetXpOsArchitecture
End If
End Function
Private Function IsAtLeastVista() As Boolean
IsAtLeastVista = GetOsVersion >= "6.0"
End Function
Private Function GetOsVersion() As String
Dim OperatingSystemSet As Object
Dim OS As Object
Set OperatingSystemSet = GetObject("winmgmts:{impersonationLevel=impersonate}"). _
InstancesOf("Win32_OperatingSystem")
For Each OS In OperatingSystemSet
GetOsVersion = Left$(Trim$(OS.Version), 3)
Next
End Function
Private Function GetVistaOsArchitecture() As String
Dim OperatingSystemSet As Object
Dim OS As Object
Set OperatingSystemSet = GetObject("Winmgmts:"). _
ExecQuery("SELECT * FROM Win32_OperatingSystem")
For Each OS In OperatingSystemSet
GetVistaOsArchitecture = Left$(Trim$(OS.OSArchitecture), 2)
Next
End Function
Private Function GetXpOsArchitecture() As String
Dim ComputerSystemSet As Object
Dim Computer As Object
Dim SystemType As String
Set ComputerSystemSet = GetObject("Winmgmts:"). _
ExecQuery("SELECT * FROM Win32_ComputerSystem")
For Each Computer In ComputerSystemSet
SystemType = UCase$(Left$(Trim$(Computer.SystemType), 3))
Next
GetXpOsArchitecture = IIf(SystemType = "X86", "32", "64")
End Function
Answer 5:
基于Windows XP 32B,该Win32_Processor.AddressWidth总是返回32.查看信息是如何的地图工具找出它是一个64位的机器?
文章来源: check OS and processor is 32 bit or 64 bit?