DWUTKA at marlow.com
DWUTKA at marlow.com
Fri May 27 18:42:06 CDT 2005
Just something I'm putting into a little project I'm working on. I know this stuff has been asked before, so here is all sorts of stuff for the OS put into a handy class for ya! Option Explicit Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long Private Declare Function GetVersionEx2 Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFOEX) As Long Private Type OSVERSIONINFO intOSVersionInfoSize As Long intMajorVersion As Long intMinorVersion As Long intBuildNumber As Long intPlatformId As Long strCSDVersion As String * 128 End Type Private Type OSVERSIONINFOEX intOSVersionInfoSize As Long intMajorVersion As Long intMinorVersion As Long intBuildNumber As Long intPlatformId As Long strCSDVersion As String * 128 intServicePackMajor As Integer intServicePackMinor As Integer intSuiteMask As Integer bytProductType As Byte bytReserved As Byte End Type Public OSType As String Public OSVersion As String Public OSBuild As Long Public OSName As String Public NTBased As Boolean Public NT4 As Boolean Public Windows2000 As Boolean Public WindowsXP As Boolean Public Windows2003 As Boolean Public Server As Boolean Public DomainController As Boolean Public ServicePack As String Dim CSDString As String Private Sub Class_Initialize() Dim os As OSVERSIONINFO Dim dwReturn As Long Dim osNT As OSVERSIONINFOEX os.intOSVersionInfoSize = Len(os) dwReturn = GetVersionEx(os) Server = False DomainController = False If dwReturn = 0 Then OSType = "Unknown" NTBased = False OSName = "Unknown" Else CSDString = os.strCSDVersion CSDString = Left(Trim(UCase(CSDString)), 1) If os.intPlatformId = 2 Then OSType = "Windows NT" NTBased = True Else OSType = "Windows 9x" NTBased = False End If OSVersion = os.intMajorVersion & "." & os.intMinorVersion If NTBased Then OSBuild = os.intBuildNumber Else OSBuild = os.intBuildNumber And &HFFF End If Windows2000 = False WindowsXP = False Windows2003 = False NT4 = False If NTBased Then osNT.intOSVersionInfoSize = Len(osNT) dwReturn = GetVersionEx2(osNT) ServicePack = osNT.intServicePackMajor & "." & osNT.intServicePackMinor If dwReturn = 0 Then OSName = "Error" Else DomainController = osNT.bytProductType = 2 If DomainController Then Server = True Else Server = osNT.bytProductType = 3 End If Select Case os.intMajorVersion Case 4 NT4 = True Select Case osNT.bytProductType Case 1 OSName = "Windows NT 4.0 WorkStation" Case 2, 3 If osNT.intSuiteMask = 2 Then OSName = "Windows NT 4.0 Server Enterprise Edition" Else OSName = "Windows NT 4.0 Server Standard Edition" End If Case Else OSName = "Windows NT 4.0" End Select Case 5 Select Case os.intMinorVersion Case 0 Windows2000 = True Select Case osNT.bytProductType Case 1 OSName = "Windows 2000 Professional Edition" Case 2, 3 Select Case osNT.intSuiteMask Case &H80 OSName = "Windows 2000 Server DataCenter" Case &H2 OSName = "Windows 2000 Server Advanced" Case Else OSName = "Windows 2000 Server" End Select Case Else OSName = "Windows 2000" End Select Case 1 WindowsXP = True Select Case osNT.intSuiteMask Case &H200 OSName = "Windows XP Home Edition" Case Else OSName = "Windows XP Professional Edition" End Select Case 2 Windows2003 = True Select Case osNT.intSuiteMask Case &H2 OSName = "Windows Server 2003 Enterprise Edition" Case &H80 OSName = "Windows Server 2003 DataCenter" Case &H400 OSName = "Windows Server 2003 Web Edition" Case Else OSName = "Windows Server 2003 Standard" End Select Case Else OSName = "Unknown NT Based OS" End Select End Select End If Else Select Case os.intMinorVersion Case 0 'Windows 95 Select Case CSDString Case "A" OSName = "Windows 95A" Case "B" OSName = "Windows 95B OSR2" Case "C" OSName = "Windows 95C OSR2" Case Else OSName = "Windows 95" End Select Case 10 Select Case CSDString Case "A" OSName = "Windows 98 Second Edition" Case Else OSName = "Windows 98" End Select Case 90 OSName = "Windows Millenium Edition" Case Else OSName = "Unknown Winodows 9x" End Select End If End If End Sub