MartyConnelly
martyconnelly at shaw.ca
Fri May 27 21:03:18 CDT 2005
I am running Win Xp Home edition SP2 and I get hex 300 for Case osNT.intSuiteMask Case &H200 OSName = "Windows XP Home Edition" DWUTKA at marlow.com wrote: >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 > > -- Marty Connelly Victoria, B.C. Canada