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
- Start a new Standard EXE project in Visual Basic. Form1 is created by
default.
- From the Project menu, add a Standard Module to the project.
- 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
- Add the following line of code to the Load event of Form1:
MsgBox GetVersion()
- 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