检查OS和处理器是32位或64位?(check OS and processor is 32 bit

2019-08-19 01:00发布

我想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:

可以尝试DataWidthAddressWidth所述的性质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?
标签: vb6 wmi