HOWTO: Determine Which 32-Bit Windows Version Is Being Used

ID: Q189249


The information in this article applies to:
  • Microsoft Visual Basic Learning, Professional, and Enterprise Editions for Windows, versions 5.0, 6.0
  • Microsoft Visual Basic Standard and Professional Editions, 32-bit only, for Windows, version 4.0
  • Microsoft Visual Basic for Applications version 5.0


SUMMARY

An application may need to perform tasks differently depending on which operating system is running on the computer. This article shows, by example, how to differentiate between Windows 95, Windows 98, Window NT 3.51, and Windows NT 4.0.

The Win32 GetVersionEx function returns information that a program can use to identify the operating system. Among those values are the major and minor revision numbers and a platform identifier. With the introduction of Windows 98, it now takes a more involved logical evaluation to determine which version of Windows is in use. The listing below provides the data needed to evaluate the OSVERSIONINFO structure populated by GetVersionEx:


                   Win95     Win98     WinNT 3.51     WinNT 4.0   Win2000
                  -------------------------------------------------------
dwPlatFormID         1         1            2            2        2

dwMajorVersion       4         4            3            4        5

dwMinorVersion       0        10           51            0        0 


MORE INFORMATION

Step-by-Step Example

  1. Start a new Standard EXE project in Visual Basic. Form1 is created by default.


  2. From the Project menu, add a Standard Module to the project.


  3. Insert the following code into Module1:
    
          Public Declare Function GetVersionExA Lib "kernel32" _
                (lpVersionInformation As OSVERSIONINFO) As Integer
    
             Public Type OSVERSIONINFO
                dwOSVersionInfoSize As Long
                dwMajorVersion As Long
                dwMinorVersion As Long
                dwBuildNumber As Long
                dwPlatformId As Long
                szCSDVersion As String * 128
             End Type
    
             Public Function getVersion() As String
                Dim osinfo As OSVERSIONINFO
                Dim retvalue As Integer
    
                osinfo.dwOSVersionInfoSize = 148
                osinfo.szCSDVersion = Space$(128)
                retvalue = GetVersionExA(osinfo)
    
                With osinfo
                Select Case .dwPlatformId
                   Case 1
                      If .dwMinorVersion = 0 Then
                         getVersion = "Windows 95"
                      ElseIf .dwMinorVersion = 10 Then
                         getVersion = "Windows 98"
                      End If
                   Case 2
                      If .dwMajorVersion = 3 Then
                         getVersion = "Windows NT 3.51"
                      ElseIf .dwMajorVersion = 4 Then
                         getVersion = "Windows NT 4.0"
                      ElseIf .dwMajorVersion = 5 Then
                         getVersion = "Windows 2000"
                      End If
                   Case Else
                      getVersion = "Failed"
                End Select
                End With
             End Function
    
     


  4. Add the following line of code to the Load event of Form1:
    
          MsgBox GetVersion()
     


  5. Run the project, and note that a message box displays the correct Windows version.



REFERENCES

For more information, please see the following article in the Microsoft Knowledge Base:

Q92936 HOWTO: Get Windows 3.1 Version Number in VB with GetVersion

Additional query words:

Keywords : kbnokeyword KbVBA kbVBp400 kbVBp500 kbVBp600 kbGrpVB
Version : WINDOWS:4.0,5.0,6.0
Platform : WINDOWS
Issue type : kbhowto


Last Reviewed: January 7, 2000
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.