VB 获取操作系统版本 (模块)

Option Explicit

Public OSNameAs String'操作系统名称(简称),方便程序控制时根据操作系统取值

Public Type OSVERSIONINFO
    dwOSVersionInfoSize
AsLong
    dwMajorVersion
AsLong
    dwMinorVersion
AsLong
    dwBuildNumber
AsLong
    dwPlatformId
AsLong
    szCSDVersion
AsString * 128
    wServicePackMajor
AsInteger
    wServicePackMinor
AsInteger
    wSuiteMask
AsInteger
    wProductType
AsByte
    wReserved
AsByte
End Type

Public Declare Function GetVersionExLib "kernel32"Alias "GetVersionExA" (lpVersionInformationAs OSVERSIONINFO)As Long

' 获得 Windows 操作系统的名称,returnType决定返回的方式,值为0时,返回简称,否则返回全称
Public Function GetWindowsVersion(ByVal returnTypeAs Integer)As String
   
Dim ver As OSVERSIONINFO, retLngAs Long, osAs String
    ver.dwOSVersionInfoSize
=Len(ver)
    GetVersionEx ver
   
'    retLng = GetVersionEx(ver)
'
    If retLng = 0 Then
'
        os = "Unknown System Version!"
'
        Exit Function
'
    End If
   
   
With ver
       
SelectCase .dwPlatformId
           
Case1
               
SelectCase .dwMinorVersion
                   
Case0
                       
If returnType= 0Then
                            os
="Windows 95"
                       
Else
                           
SelectCase .szCSDVersion
                               
Case"C"
                                    os
="Windows 95 OSR2"
                               
Case"B"
                                    os
="Windows 95 OSR2"
                               
CaseElse
                                    os
="Windows 95"
                           
EndSelect
                       
EndIf
                   
Case10
                       
If returnType= 0Then
                            os
="Windows 98"
                       
Else
                           
SelectCase .szCSDVersion
                               
Case"A"
                                    os
="Windows 98 SE"
                               
CaseElse
                                    os
="Windows 98"
                           
EndSelect
                       
EndIf
                   
Case90
                       
If returnType= 0Then
                            os
="Windows Me"
                       
Else
                            os
="Windows Millennium Edition"
                       
EndIf
               
EndSelect
           
Case2
               
SelectCase .dwMajorVersion
                   
Case3
                        os
="Windows NT 3.51"
                   
Case4
                        os
="Windows NT 4.0"
                   
Case5
                       
SelectCase .dwMinorVersion
                           
Case0
                               
If returnType= 0Then
                                    os
="Windows 2000"
                               
Else
                                   
SelectCase .wSuiteMask
                                       
Case&H80
                                            os
="Windows 2000 Data center"
                                       
Case&H2
                                            os
="Windows 2000 Advanced"
                                       
CaseElse
                                            os
="Windows 2000"
                                   
EndSelect
                               
EndIf
                           
Case1
                               
If returnType= 0Then
                                    os
="Windows XP"
                               
Else
                                   
SelectCase .wSuiteMask
                                       
Case&H0
                                            os
="Windows XP Professional"
                                       
Case&H200
                                            os
="Windows XP Home"
                                       
CaseElse
                                            os
="Windows XP"
                                   
EndSelect
                               
EndIf
                           
Case2
                               
If returnType= 0Then
                                    os
="Windows Server 2003"
                               
Else
                                   
SelectCase .wSuiteMask
                                       
Case&H2
                                            os
="Windows Server 2003 Enterprise"
                                       
Case&H80
                                            os
="Windows Server 2003 Data center"
                                       
Case&H400
                                            os
="Windows Server 2003 Web Edition"
                                       
Case&H0
                                            os
="Windows Server 2003 Standard"
'                                        Case &H112
'
                                            os = "Windows Server 2003 R2 Enterprise"
                                        Case Else
                                            os
="Windows Server 2003"
                                   
EndSelect
                               
EndIf
                       
EndSelect
                       
If returnType<> 0And .wServicePackMajor> 0Then
                            os
= os& " Service Pack" & .wServicePackMajor& IIf(.wServicePackMinor> 0,"."& .wServicePackMinor, vbNullString)
                       
EndIf
                   
Case6
                       
If returnType<> 0Then
                           
SelectCase .wProductType
                               
Case&H6
                                    os
="Business Edition"
                               
Case&H10
                                    os
="Business Edition (N)"
                               
Case&H12
                                    os
="Cluster Server Edition"
                               
Case&H8
                                    os
="Server Datacenter Edition (full installation)"
                               
Case&HC
                                    os
="Server Datacenter Edition (core installation)"
                               
Case&H4
                                    os
="Enterprise Edition"
                               
Case&H1B
                                    os
="Enterprise Edition (N)"
                               
Case&HA
                                    os
="Server Enterprise Edition (full installation)"
                               
Case&HE
                                    os
="Server Enterprise Edition (core installation)"
                               
Case&HF
                                    os
="Server Enterprise Edition for Itanium-based Systems"
                               
Case&H2
                                    os
="Home Basic Edition"
                               
Case&H5
                                    os
="Home Basic Edition (N)"
                               
Case&H3
                                    os
="Home Premium Edition"
                               
Case&H1A
                                    os
="Home Premium Edition (N)"
                               
Case&H13
                                    os
="Home Server Edition"
                               
Case&H18
                                    os
="Server for Small Business Edition"
                               
Case&H9
                                    os
="Small Business Server"
                               
Case&H19
                                    os
="Small Business Server Premium Edition"
                               
Case&H7
                                    os
="Server Standard Edition (full installation)"
                               
Case&HD
                                    os
="Server Standard Edition (core installation)"
                               
Case&H8
                                    os
="Starter Edition"
                               
Case&H17
                                    os
="Storage Server Enterprise Edition"
                               
Case&H14
                                    os
="Storage Server Express Edition"
                               
Case&H15
                                    os
="Storage Server Standard Edition"
                               
Case&H16
                                    os
="Storage Server Workgroup Edition"
                               
Case&H1
                                    os
="Ultimate Edition"
                               
Case&H1C
                                    os
="Ultimate Edition (N)"
                               
Case&H0
                                    os
="An unknown product"
                               
Case&HABCDABCD
                                    os
="Not activated product"
                               
Case&H11
                                    os
="Web Server Edition"
                           
EndSelect
                       
EndIf
                       
SelectCase .dwMinorVersion
                           
Case0
                               
SelectCase .wProductType
                                   
Case3
                                       
If returnType= 0Then
                                            os
="Windows Server 2008"
                                       
Else
                                            os
="Windows Server 2008" & os
                                       
EndIf
                                   
CaseElse
                                       
If returnType= 0Then
                                            os
="Windows Vista"
                                       
Else
                                            os
="Windows Vista " & os
                                       
EndIf
                               
EndSelect
                           
Case1
                               
SelectCase .wProductType
                                   
Case3
                                       
If returnType= 0Then
                                            os
="Windows Server 2008 R2"
                                       
Else
                                            os
="Windows Server 2008 R2"& os
                                       
EndIf
                                   
CaseElse
                                       
If returnType= 0Then
                                            os
="Windows 7"
                                       
Else
                                            os
="Windows 7 " & os
                                       
EndIf
                               
EndSelect
                       
EndSelect
                       
If returnType<> 0And .wServicePackMajor> 0Then
                            os
= os& " Service Pack" & .wServicePackMajor& IIf(.wServicePackMinor> 0,"."& .wServicePackMinor, vbNullString)
                       
EndIf
               
EndSelect
           
CaseElse
                os
="Unknown System Version!"
       
End Select
   
If returnType<> 0Then os = os &" [Version: " & .dwMajorVersion& "."& .dwMinorVersion& "."& .dwBuildNumber& "]"
   
End With
    GetWindowsVersion
= os
End Function

'返回获取本地连接属性的方式
'
Vista及Win7下 GetDetailsOf(FolderItem, 2) 获取的值类似于:“Marvell Yukon 88E8056 PCI-E Gigabit Ethernet Controller”,对应XP、2000及2003下的GetDetailsOf(FolderItem, 3)
'
Vista及Win7下 GetDetailsOf(FolderItem, 1) 获取的值为本地连接状态,为“网络”时说明正常,对应XP、2000及2003下的GetDetailsOf(FolderItem, 2)
Public Function getAdapterStatusType()As Integer
   
Select Case OSName
       
Case "Windows Vista","Windows Server 2008","Windows 7","Windows Server 2008 R2"
            getAdapterStatusType
=2
       
Case Else
            getAdapterStatusType
=3
   
End Select
End Function

 


'返回获取本地连接属性的方式
'
Vista及Win7下 GetDetailsOf(FolderItem, 2) 获取的值类似于:“Marvell Yukon 88E8056 PCI-E Gigabit Ethernet Controller”,对应XP、2000及2003下的GetDetailsOf(FolderItem, 3)
'
Vista及Win7下 GetDetailsOf(FolderItem, 1) 获取的值为本地连接状态,为“网络”时说明正常,对应XP、2000及2003下的GetDetailsOf(FolderItem, 2)
Public Function getAdapterStatusType()As Integer
   
Select Case OSName
       
Case "Windows Vista","Windows Server 2008","Windows 7","Windows Server 2008 R2"
            getAdapterStatusType
=2
       
Case Else
            getAdapterStatusType
=3
   
End Select
End Function

你可能感兴趣的:(系统文件,VB)