Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0725: Laufendes Betriebssystem ermitteln II

 von 

Beschreibung 

Dieser Tipp ermittelt die Bezeichnung des laufenden Betriebssystems. Es werden Windows Version erkannt von Windows 3.1 bis Vista. Zusätzlich werden noch weitere Informationen wie Produkttyp, Architektur (32/64 bit) und ServicePack-Level ausgegeben.

Dieses Beispiel basiert auf diesem MSDN Artikel Getting the System Version (von C übersetzt und erweitert).

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

GetCurrentProcess, GetNativeSystemInfo, GetProductInfo, GetSystemInfo, GetSystemMetrics, GetVersionExA (GetVersionEx1), GetVersionExA (GetVersionEx2), IsWow64Process

Download:

Download des Beispielprojektes [5,58 KB]

' Dieser Quellcode stammt von http://www.activevb.de
' und kann frei verwendet werden. Für eventuelle Schäden
' wird nicht gehaftet.
' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
' Ansonsten viel Spaß und Erfolg mit diesem Source!
' ------------- Anfang Projektdatei Project1.vbp -------------
' --------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Textfeld "Text1"
' Steuerelement: Schaltfläche "Command1"
Option Explicit

Private Sub Command1_Click()

    Unload Me
    
End Sub

Private Sub Form_Load()

    On Error Goto Catch
    Me.Text1.Text = GetOSVersion()
    
    Exit Sub
    
Catch:
    Me.Text1.Text = "ERROR!"
    
End Sub

' ---------- Ende Formular "Form1" alias Form1.frm  ----------
' --------- Anfang Modul "Module1" alias Module1.bas ---------
Option Explicit

Private Type OSVERSIONINFO
    dwOSVersionInfoSize         As Long
    dwMajorVersion              As Long
    dwMinorVersion              As Long
    dwBuildNumber               As Long
    dwPlatformId                As Long
    szCSDVersion                As String * 128 ' // Service Pack
End Type

Private Type OSVERSIONINFOEX
    dwOSVersionInfoSize         As Long
    dwMajorVersion              As Long
    dwMinorVersion              As Long
    dwBuildNumber               As Long
    dwPlatformId                As Long
    szCSDVersion                As String * 128 ' // Service Pack
    wServicePackMajor           As Integer
    wServicePackMinor           As Integer
    wSuiteMask                  As Integer
    wProductType                As Byte
    wReserved                   As Byte
End Type

Private Type SYSTEM_INFO

    ' //dwOemID                  As Long
    wProcessorArchitecture  As Integer
    wReserved               As Integer
    dwPageSize                  As Long
    lpMinimumApplicationAddress As Long
    lpMaximumApplicationAddress As Long
    dwActiveProcessorMask       As Long
    dwNumberOfProcessors        As Long
    dwProcessorType             As Long
    dwAllocationGranularity     As Long
    wProcessorLevel             As Integer
    wProcessorRevision          As Integer
End Type

' // API: min. Windows 95
Private Declare Function GetVersionEx1 Lib "kernel32.dll" _
                         Alias "GetVersionExA" ( _
                         ByRef lpVersionInformation As OSVERSIONINFO ) As Long
                         
' // API: min. Windows 2000
Private Declare Function GetVersionEx2 Lib "kernel32.dll" _
                         Alias "GetVersionExA" ( _
                         ByRef lpVersionInformation As OSVERSIONINFOEX ) As Long
                         
' // API: min. Windows XP
Private Declare Function IsWow64Process Lib "kernel32" ( _
                         ByVal hProcess As Long, _
                         ByRef Wow64Process As Long ) As Long
                         
' // API: min Windows 95
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long

' // API: min. Windows 2000
Private Declare Sub GetSystemInfo Lib "kernel32.dll" ( _
                    ByRef lpSystemInfo As SYSTEM_INFO )
                    
' // API: min. Windows 2003 (WOW64)
Private Declare Sub GetNativeSystemInfo Lib "kernel32.dll" ( _
                    ByRef lpSystemInfo As SYSTEM_INFO )
                    
' // API: min. Windows 2000
Private Declare Function GetSystemMetrics Lib "user32.dll" ( _
                         ByVal nIndex As Long ) As Long
                         
' // API: only Windows Vista or Windows Server 2008
Private Declare Function GetProductInfo Lib "kernel32.dll" ( _
                         ByVal dwOSMajorVersion As Long, _
                         ByVal dwOSMinorVersion As Long, _
                         ByVal dwSpMajorVersion As Long, _
                         ByVal dwSpMinorVersion As Long, _
                         ByRef pdwReturnedProductType As Long ) As Boolean
                         
' // Const: GetSystemMetrics
' // Windows Server 2003 R2
Private Const SM_SERVERR2                               As Long = 89&
' // Windows XP Media Center Edition
Private Const SM_MEDIACENTER                            As Long = 87&
' // Windows XP Starter Edition
Private Const SM_STARTER                                As Long = 88&
' // Windows XP Tablet PC Edition
Private Const SM_TABLETPC                               As Long = 86&
' // Const: GetVersionEx.wProcessorArchitecture
' // x64 (AMD Or Intel)
Private Const PROCESSOR_ARCHITECTURE_AMD64              As Long = &H9&
' // Intel Itanium Processor Family (IPF)
Private Const PROCESSOR_ARCHITECTURE_IA64               As Long = &H6&
' // x86
Private Const PROCESSOR_ARCHITECTURE_INTEL              As Long = &H0&
' // Unknown architecture.
Private Const PROCESSOR_ARCHITECTURE_UNKNOWN            As Long = &HFFFF&
' // Const: GetVersionEx.wProductType
' // The system is a domain controller and the operating system is Windows
' Server 2008, Windows Server 2003, or Windows 2000 Server.
Private Const VER_NT_DOMAIN_CONTROLLER                  As Long = &H2&
' // The operating system is Windows Server 2008, Windows Server 2003, or
' Windows 2000 Server. Note that a server that is also a domain controller
' is reported as VER_NT_DOMAIN_CONTROLLER, not VER_NT_SERVER.
Private Const VER_NT_SERVER                             As Long = &H3&
' // The operating system is Windows Vista, Windows XP Professional,
' Windows XP Home Edition, or Windows 2000 Professional.
Private Const VER_NT_WORKSTATION                        As Long = &H1&
' // Const: GetVersionEx.wSuiteMask
' // Microsoft BackOffice components are installed.
Private Const VER_SUITE_BACKOFFICE                      As Long = &H4&
' // Windows Server 2003, Web Edition is installed.
Private Const VER_SUITE_BLADE                           As Long = &H400&
' // Windows Server 2003, Compute Cluster Edition is installed.
Private Const VER_SUITE_COMPUTE_SERVER                  As Long = &H4000&
' // Windows Server 2008 Datacenter, Windows Server 2003, Datacenter
' Edition, or Windows 2000 Datacenter Server is installed.
Private Const VER_SUITE_DATACENTER                      As Long = &H80&
' // Windows Server 2008 Enterprise, Windows Server 2003, Enterprise
' Edition, or Windows 2000 Advanced Server is installed. Refer to the
' Remarks section for more information about this bit flag.
Private Const VER_SUITE_ENTERPRISE                      As Long = &H2&
' // Windows XP Embedded is installed.
Private Const VER_SUITE_EMBEDDEDNT                      As Long = &H40&
' // Windows Vista Home Premium, Windows Vista Home Basic, or Windows XP
' Home Edition is installed.
Private Const VER_SUITE_PERSONAL                        As Long = &H200&
' // Remote Desktop is supported, but only one interactive session is
' supported. This value is set unless the system is running in application
' server mode.
Private Const VER_SUITE_SINGLEUSERTS                    As Long = &H100&
' // Microsoft Small Business Server was once installed on the system, but
' may have been upgraded to another version of Windows. Refer to the
' Remarks section for more information about this bit flag.
Private Const VER_SUITE_SMALLBUSINESS                   As Long = &H1&
' // Microsoft Small Business Server is installed with the restrictive
' client license in force. Refer to the Remarks section for more
' information about this bit flag.
Private Const VER_SUITE_SMALLBUSINESS_RESTRICTED        As Long = &H20&
' // Windows Storage Server 2003 R2 or Windows Storage Server 2003is
' installed.
Private Const VER_SUITE_STORAGE_SERVER                  As Long = &H2000&
' // Terminal Services is installed. This value is always set. If
' VER_SUITE_TERMINAL is set but VER_SUITE_SINGLEUSERTS is not set, the
' system is running in application server mode.
Private Const VER_SUITE_TERMINAL                        As Long = &H10&
' // Windows Home Server is installed.
Private Const VER_SUITE_WH_SERVER                       As Long = &H8000&
' // Const: GetVersionEx.dwPlatformId
' // Specifies the Windows 3.1 OS.
Private Const VER_PLATFORM_WIN32s                       As Long = &H0&
' // Specifies the Windows 95 or Windows 98 OS.
Private Const VER_PLATFORM_WIN32_WINDOWS                As Long = &H1&
' // Specifies the Windows NT OS.
Private Const VER_PLATFORM_WIN32_NT                     As Long = &H2&
' // Specifies the Windows CE OS.
Private Const VER_PLATFORM_WIN32_CE                     As Long = &H3&
' // Const: GetProductInfo(pdwReturnedProductType)
' // Business Edition
Private Const PRODUCT_BUSINESS                          As Long = &H6&
' // Business Edition
Private Const PRODUCT_BUSINESS_N                        As Long = &H10&
' // Cluster Server Edition
Private Const PRODUCT_CLUSTER_SERVER                    As Long = &H12&
' // Server Datacenter Edition (full installation)
Private Const PRODUCT_DATACENTER_SERVER                 As Long = &H8&
' // Server Datacenter Edition (core installation)
Private Const PRODUCT_DATACENTER_SERVER_CORE            As Long = &HC&
' // Server Datacenter Edition without Hyper-V (core installation)
Private Const PRODUCT_DATACENTER_SERVER_CORE_V          As Long = &H27&
' // Server Datacenter Edition without Hyper-V (full installation)
Private Const PRODUCT_DATACENTER_SERVER_V               As Long = &H25&
' // Enterprise Edition
Private Const PRODUCT_ENTERPRISE                        As Long = &H4&
' // Enterprise Edition
Private Const PRODUCT_ENTERPRISE_N                      As Long = &H1B&
' // Server Enterprise Edition (full installation)
Private Const PRODUCT_ENTERPRISE_SERVER                 As Long = &HA&
' // Server Enterprise Edition (core installation)
Private Const PRODUCT_ENTERPRISE_SERVER_CORE            As Long = &HE&
' // Server Enterprise Edition without Hyper-V (core installation)
Private Const PRODUCT_ENTERPRISE_SERVER_CORE_V          As Long = &H29&
' // Server Enterprise Edition for Itanium-based Systems
Private Const PRODUCT_ENTERPRISE_SERVER_IA64            As Long = &HF&
' // Server Enterprise Edition without Hyper-V (full installation)
Private Const PRODUCT_ENTERPRISE_SERVER_V               As Long = &H26&
' // Home Basic Edition
Private Const PRODUCT_HOME_BASIC                        As Long = &H2&
' // Home Basic Edition
Private Const PRODUCT_HOME_BASIC_N                      As Long = &H5&
' // Home Premium Edition
Private Const PRODUCT_HOME_PREMIUM                      As Long = &H3&
' // Home Premium Edition
Private Const PRODUCT_HOME_PREMIUM_N                    As Long = &H1A&
' // Home Server Edition
Private Const PRODUCT_HOME_SERVER                       As Long = &H13&
' // Windows Essential Business Server Management Server
Private Const PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT  As Long = &H1E&
' // Windows Essential Business Server Messaging Server
Private Const PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING   As Long = &H20&
' // Windows Essential Business Server Security Server
Private Const PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY    As Long = &H1F&
' // Server for Small Business Edition
Private Const PRODUCT_SERVER_FOR_SMALLBUSINESS          As Long = &H18&
' // Small Business Server
Private Const PRODUCT_SMALLBUSINESS_SERVER              As Long = &H9&
' // Small Business Server Premium Edition
Private Const PRODUCT_SMALLBUSINESS_SERVER_PREMIUM      As Long = &H19&
' // Server Standard Edition (full installation)
Private Const PRODUCT_STANDARD_SERVER                   As Long = &H7&
' // Server Standard Edition (core installation)
Private Const PRODUCT_STANDARD_SERVER_CORE              As Long = &HD&
' // Server Standard Edition without Hyper-V (core installation)
Private Const PRODUCT_STANDARD_SERVER_CORE_V            As Long = &H28&
' // Server Standard Edition without Hyper-V (full installation)
Private Const PRODUCT_STANDARD_SERVER_V                 As Long = &H24&
' // Starter Edition
Private Const PRODUCT_STARTER                           As Long = &HB&
' // Storage Server Enterprise Edition
Private Const PRODUCT_STORAGE_ENTERPRISE_SERVER         As Long = &H17&
' // Storage Server Express Edition
Private Const PRODUCT_STORAGE_EXPRESS_SERVER            As Long = &H14&
' // Storage Server Standard Edition
Private Const PRODUCT_STORAGE_STANDARD_SERVER           As Long = &H15&
' // Storage Server Workgroup Edition
Private Const PRODUCT_STORAGE_WORKGROUP_SERVER          As Long = &H16&
' // An unknown product
Private Const PRODUCT_UNDEFINED                         As Long = &H0&
' // Ultimate Edition
Private Const PRODUCT_ULTIMATE                          As Long = &H1&
' // Ultimate Edition
Private Const PRODUCT_ULTIMATE_N                        As Long = &H1C&
' // Web Server Edition (full installation)
Private Const PRODUCT_WEB_SERVER                        As Long = &H11&
' // Web Server Edition (core installation)
Private Const PRODUCT_WEB_SERVER_CORE                   As Long = &H1D&
Public Function GetOSVersion() As String

    Dim OsVersInfoEx    As OSVERSIONINFOEX
    Dim OsVersInfo      As OSVERSIONINFO
    Dim OsSystemInfo    As SYSTEM_INFO
    Dim OsVersion       As String
    Dim Ret             As Long
    
    OsVersInfo.dwOSVersionInfoSize = Len(OsVersInfo)
    
    If GetVersionEx1(OsVersInfo) = 0 Then Err.Raise -1
    
    Select Case OsVersInfo.dwPlatformId
    
    Case VER_PLATFORM_WIN32s        ' //Specifies the Windows 3.1 OS.
        OsVersion = "Windows 3.1"
        
    Case VER_PLATFORM_WIN32_WINDOWS ' // Specifies the Windows 95 or
                                    ' Windows 98 or Windows ME OS.
                                    
        Select Case OsVersInfo.dwMinorVersion
        
        Case 0
        
            If OsVersInfo.dwBuildNumber = 950 Then
            
                OsVersion = "Windows 95"
                
            ElseIf (OsVersInfo.dwBuildNumber > 950) And ( _
                OsVersInfo.dwBuildNumber <= 1080) Then
                
                OsVersion = "Windows 95 SP1"
                
            ElseIf OsVersInfo.dwBuildNumber > 1080 Then
            
                OsVersion = "Windows 95 OSR2"
                
            End If
            
        Case 10
        
            If OsVersInfo.dwBuildNumber = 1998 Then
            
                OsVersion = "Windows 98"
                
            ElseIf (OsVersInfo.dwBuildNumber > 1998) And ( _
                OsVersInfo.dwBuildNumber < 2183) Then
                
                OsVersion = "Windows 98 SP1"
                
            ElseIf OsVersInfo.dwBuildNumber >= 2183 Then
            
                OsVersion = "Windows 98 SE"
                
            End If
            
        Case 90
            OsVersion = "Windows ME"
            
        End Select
        
    Case VER_PLATFORM_WIN32_NT      ' // Specifies the Windows NT OS.
    
        Select Case OsVersInfo.dwMajorVersion
        
        Case 3
            OsVersion = "Windows NT 3.x"
            
        Case 4
            OsVersion = "Windows NT 4.x"
            
        Case 5                     ' // The operating system is Windows
                                   ' Server 2003 R2, Windows Server 2003,
                                   ' Windows XP, or Windows 2000.
            OsVersInfoEx.dwOSVersionInfoSize = Len(OsVersInfoEx)
            
            If GetVersionEx2(OsVersInfoEx) = 0 Then Err.Raise -1
            
            Select Case OsVersInfoEx.dwMinorVersion
            
            Case 0                 ' // The operating system is Windows 2000
            
                If OsVersInfoEx.wProductType = VER_NT_WORKSTATION Then
                
                    OsVersion = "Windows 2000 Professional"
                    
                Else
                
                    If OsVersInfoEx.wSuiteMask And VER_SUITE_DATACENTER Then
                    
                        OsVersion = "Windows 2000 Datacenter Server"
                        
                    ElseIf OsVersInfoEx.wSuiteMask And VER_SUITE_ENTERPRISE _
                        Then
                        
                        OsVersion = "Windows 2000 Advanced Server"
                        
                    Else
                    
                        OsVersion = "Windows 2000 Server"
                        
                    End If
                End If
                
            Case 1                 ' // The operating system is Windows XP.
            
                If GetSystemMetrics(SM_MEDIACENTER) Then
                
                    OsVersion = "Windows XP Media Center Edition"
                    
                ElseIf GetSystemMetrics(SM_STARTER) Then
                
                    OsVersion = "Windows XP Starter Edition"
                    
                ElseIf GetSystemMetrics(SM_TABLETPC) Then
                
                    OsVersion = "Windows XP Tablet PC Edition"
                    
                ElseIf OsVersInfoEx.wSuiteMask And VER_SUITE_PERSONAL Then
                
                    OsVersion = "Windows XP Home Edition"
                    
                Else
                
                    OsVersion = "Windows XP Professional"
                    
                End If
                
            Case 2                 ' // The operating system is Windows
                                   ' Server 2003 R2, Windows Server 2003,
                                   ' or Windows XP Professional x64
                                   ' Edition.
                                   
                If IsWow64Process(GetCurrentProcess(), Ret) = 0 Then _
                    Err.Raise -1
                    
                If Ret <> 0 Then
                
                    Call GetNativeSystemInfo(OsSystemInfo)
                    
                Else
                
                    Call GetSystemInfo(OsSystemInfo)
                    
                End If
                
                If GetSystemMetrics(SM_SERVERR2) Then
                
                    OsVersion = "Windows Server 2003 R2, "
                    
                ElseIf OsVersInfoEx.wSuiteMask = VER_SUITE_STORAGE_SERVER Then
                
                    OsVersion = "Windows Storage Server 2003"
                    
                ElseIf (OsVersInfoEx.wProductType = VER_NT_WORKSTATION) And _
                    OsSystemInfo.wProcessorArchitecture = _
                    PROCESSOR_ARCHITECTURE_AMD64) Then
                    
                    OsVersion = "Windows XP Professional x64 Edition"
                    
                Else
                
                    OsVersion = "Windows Server 2003, "
                    
                End If
                
                ' // Test for the server type.
                If OsVersInfoEx.wProductType <> VER_NT_WORKSTATION Then
                
                    If OsSystemInfo.wProcessorArchitecture = _
                        PROCESSOR_ARCHITECTURE_IA64 Then
                        
                        If OsVersInfoEx.wSuiteMask And VER_SUITE_DATACENTER _
                            Then
                            
                            OsVersion = OsVersion & "Datacenter Edition " & _
                                "for Itanium-based Systems"
                                
                        ElseIf OsVersInfoEx.wSuiteMask And _
                            VER_SUITE_ENTERPRISE Then
                            
                            OsVersion = OsVersion & "Enterprise Edition " & _
                                "for Itanium-based Systems"
                                
                        End If
                    End If
                    
                ElseIf OsSystemInfo.wProcessorArchitecture = _
                    PROCESSOR_ARCHITECTURE_AMD64 Then
                    
                    If OsVersInfoEx.wSuiteMask And VER_SUITE_DATACENTER Then
                    
                        OsVersion = OsVersion & "Datacenter x64 Edition"
                        
                    ElseIf OsVersInfoEx.wSuiteMask And VER_SUITE_ENTERPRISE _
                        Then
                        
                        OsVersion = OsVersion & "Enterprise x64 Edition"
                        
                    Else
                    
                        OsVersion = OsVersion & "Standard x64 Edition"
                        
                    End If
                    
                Else
                
                    If OsVersInfoEx.wSuiteMask And VER_SUITE_COMPUTE_SERVER _
                        Then
                        
                        OsVersion = OsVersion & "Compute Cluster Edition"
                        
                    ElseIf OsVersInfoEx.wSuiteMask And VER_SUITE_DATACENTER _
                        Then
                        
                        OsVersion = OsVersion & "Datacenter Edition"
                        
                    ElseIf OsVersInfoEx.wSuiteMask And VER_SUITE_ENTERPRISE _
                        Then
                        
                        OsVersion = OsVersion & "Enterprise Edition"
                        
                    ElseIf OsVersInfoEx.wSuiteMask And VER_SUITE_BLADE Then
                    
                        OsVersion = OsVersion & "Web Edition"
                        
                    Else
                    
                        OsVersion = OsVersion & "Standard Edition"
                        
                    End If
                End If
                
            End Select
            
        Case 6                     ' // The operating system is Windows
                                   ' Vista or Windows Server 2008.
            OsVersInfoEx.dwOSVersionInfoSize = Len(OsVersInfoEx)
            
            If GetVersionEx2(OsVersInfoEx) = 0 Then Err.Raise -1
            If OsVersInfoEx.wProductType = VER_NT_WORKSTATION Then
            
                OsVersion = "Windows Vista "
                
            Else
            
                OsVersion = "Windows Server 2008 "
                
            End If
            
            Dim dwType As Long
            
            Call GetProductInfo(6, 0, 0, 0, dwType)
            
            Select Case dwType
            
            Case PRODUCT_ULTIMATE
                OsVersion = OsVersion & "Ultimate Edition"
                
            Case PRODUCT_HOME_PREMIUM
                OsVersion = OsVersion & "Home Premium Edition"
                
            Case PRODUCT_HOME_BASIC
                OsVersion = OsVersion & "Home Basic Edition"
                
            Case PRODUCT_ENTERPRISE
                OsVersion = OsVersion & "Enterprise Edition"
                
            Case PRODUCT_BUSINESS
                OsVersion = OsVersion & "Business Edition"
                
            Case PRODUCT_STARTER
                OsVersion = OsVersion & "Starter Edition"
                
            Case PRODUCT_CLUSTER_SERVER
                OsVersion = OsVersion & "Cluster Server Edition"
                
            Case PRODUCT_DATACENTER_SERVER
                OsVersion = OsVersion & "Datacenter Edition"
                
            Case PRODUCT_DATACENTER_SERVER_CORE
            
                OsVersion = OsVersion & "Datacenter Edition (core " & _
                    "installation)"
                    
            Case PRODUCT_ENTERPRISE_SERVER
                OsVersion = OsVersion & "Enterprise Edition"
                
            Case PRODUCT_ENTERPRISE_SERVER_CORE
            
                OsVersion = OsVersion & "Enterprise Edition (core " & _
                    "installation)"
                    
            Case PRODUCT_ENTERPRISE_SERVER_IA64
            
                OsVersion = OsVersion & "Enterprise Edition for " & _
                    "Itanium-based Systems"
                    
            Case PRODUCT_SMALLBUSINESS_SERVER
                OsVersion = OsVersion & "Small Business Server"
                
            Case PRODUCT_SMALLBUSINESS_SERVER_PREMIUM
            
                OsVersion = OsVersion & "Small Business Server Premium " & _
                    "Edition"
                    
            Case PRODUCT_STANDARD_SERVER
                OsVersion = OsVersion & "Standard Edition"
                
            Case PRODUCT_STANDARD_SERVER_CORE
                OsVersion = OsVersion & "Standard Edition (core installation)"
                
            Case PRODUCT_WEB_SERVER
                OsVersion = OsVersion & "Web Server Edition"
                
            End Select
            
            If IsWow64Process(GetCurrentProcess(), Ret) = 0 Then Err.Raise -1
            If Ret <> 0 Then
            
                Call GetNativeSystemInfo(OsSystemInfo)
                
            Else
            
                Call GetSystemInfo(OsSystemInfo)
                
            End If
            
            If OsSystemInfo.wProcessorArchitecture = _
                PROCESSOR_ARCHITECTURE_AMD64 Then
                
                OsVersion = OsVersion & ", 64-bit"
                
            ElseIf OsSystemInfo.wProcessorArchitecture = _
                PROCESSOR_ARCHITECTURE_INTEL Then
                
                OsVersion = OsVersion & ", 32-bit"
                
            End If
            
        End Select
        
    Case VER_PLATFORM_WIN32_CE     ' // Specifies the Windows CE OS.
        OsVersion = "Windows CE"
        
    End Select
    
    ' // Include service pack.
    Dim strSp   As String
    Dim lSp     As Long
    
    strSp = OsVersInfo.szCSDVersion
    lSp = InStr(1, strSp, Chr$(0))
    
    If lSp Then strSp = Mid$(strSp, 1, lSp - 1)
    If Len(strSp) Then OsVersion = OsVersion & " (" & strSp & ")"
    
    GetOSVersion = OsVersion
    
End Function

' ---------- Ende Modul "Module1" alias Module1.bas ----------
' -------------- Ende Projektdatei Project1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 3 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von N. Basic am 24.01.2011 um 12:16

Ergänzung für Window 7 und 2008 R2
Getestet in 32- und 64-Bit: WIN 7, 2008, Vista, XP, 2000
Case 6: '// The operating system is Windows Vista or _
Windows Server 2008 or Windows 7 or Windows _ Server 2008 R2
OsVersInfoEx.dwOSVersionInfoSize = Len(OsVersInfoEx)
If GetVersionEx2(OsVersInfoEx) = 0 Then Err.Raise -1
Select Case OsVersInfoEx.dwMinorVersion
Case 0
If OsVersInfoEx.wProductType = VER_NT_WORKSTATION Then
OsVersion = "Windows Vista "
Else
OsVersion = "Windows Server 2008 "
End If
Case 1
If OsVersInfoEx.wProductType = VER_NT_WORKSTATION Then
OsVersion = "Windows 7 "
Else
OsVersion = "Windows Server 2008 R2 "
End If
End Select

Kommentar von Frank am 13.02.2010 um 10:53

Super Artikel (VB 5/6-Tipp 0725: Laufendes Betriebssystem ermitteln II), aber wie geht es jetzt mit Win7 weiter. Hier gab es ja schon Vista aber noch kein Win7!?

Kommentar von hermann am 22.01.2009 um 17:13

In

ElseIf (OsVersInfoEx.wProductType = VER_NT_WORKSTATION) And _
OsSystemInfo.wProcessorArchitecture = _
PROCESSOR_ARCHITECTURE_AMD64) Then

ist die letze Klammer falsch.