You are currently offline, waiting for your internet to reconnect

How to determine which 32-bit Windows version is being used

This article was previously published under Q189249
An application may need to perform tasks differently depending on whichoperating system is running on the computer. This article shows, by example, how to differentiate between Microsoft Windows 95, Microsoft Windows 98, Microsoft Window NT 3.51, Microsoft Windows NT 4.0, Microsoft Windows 2000, and Microsoft Windows XP.

The Win32 GetVersionEx function returns information that a program can useto identify the operating system. Among those values are the major andminor revision numbers and a platform identifier. With the introduction ofWindows 98, it now takes a more involved logical evaluation to determinewhich version of Windows is in use. The listing below provides the dataneeded to evaluate the OSVERSIONINFO structure populated by the GetVersionEx function:
Windows 95Windows 98Windows MeWindows NT 4.0Windows 2000Windows XP
PlatformID 1 1 1 2 2 2
Major Version 4 4 4 4 5 5
Minor Version 0 10 90 0 0 1

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                                    Select Case .dwMinorVersion                        Case 0                            getVersion = "Windows 95"                        Case 10                            getVersion = "Windows 98"                        Case 90                            getVersion = "Windows Millennium"                    End Select                    Case 2                    Select Case .dwMajorVersion                        Case 3                            getVersion = "Windows NT 3.51"                        Case 4                            getVersion = "Windows NT 4.0"                        Case 5                            If .dwMinorVersion = 0 Then                                getVersion = "Windows 2000"                            Else                                getVersion = "Windows XP"                            End If                    End Select                    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.
For additional information, click the following article number to view the article in the Microsoft Knowledge Base:
92936 How to get Windows 3.1 version number in VB with GetVersion

Article ID: 189249 - Last Review: 09/03/2004 23:12:00 - Revision: 3.0

  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 6.0 Enterprise Edition
  • Microsoft Visual Basic 4.0 Standard Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic for Applications 5.0
  • kbhowto KB189249