4

OSが32ビットまたは64ビットで、プロセッサが32ビットまたは64ビットであることをvb6コードで確認したいので、これらのコードを取得するのを手伝ってください。vb.net では Environment.Is64BitOperatingSystem プロパティを使用でき、.net 4.0 以降でのみ機能します。しかし、これらの情報をvb6で取得するにはどうすればよいですか?

4

5 に答える 5

3

CPU については、WMI を使用して AddressWidth を取得できます。VBScript のサンプルは、ここにあります。

于 2013-04-02T14:00:14.127 に答える
1

オペレーティング システムのアーキテクチャ

それを取得する 1 つの方法は、GetNativeSystemInfoWinAPI 関数を使用することです。リンクされた質問でカバーされています。

同様の方法で両方の目標を達成したい場合は、OS アーキテクチャも WMI から取得できます。Windows Vista 以降のオペレーティング システムではWin32_OperatingSystem、クラスをクエリしてプロパティを分析できますOSArchitecture( MSDN )。残念ながら、このプロパティは Windows XP 以前のバージョンには存在しません。これらのシステムでは、代わりにクラスをクエリしてプロパティWin32_ComputerSystemを分析できます ( MSDN )。SystemType

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
于 2013-04-05T21:17:55.567 に答える
1

DataWidthWMI クラスのまたはAddressWidthプロパティを試すことができますWin32_Processor。32 ビット プロセッサでは値は 32 で、64 ビット プロセッサでは 64 です。

于 2013-04-02T16:30:09.503 に答える