设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1560|回复: 3
打印 上一主题 下一主题

[模块/函数] 【技巧】完全获取Windows操作系统的版本信息(摘录)

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2015-3-21 16:04:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有些程序对Windows的版本是敏感的,所以要预先判断系统的windows版本,这里提供一个完全的判断系统版本号的函数,非常完整齐全。
  1. Option Explicit
  2. Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFOEX) As Long
  3. 摘自:枕善居
  4. Private Type OSVERSIONINFOEX
  5.     dwOSVersionInfoSize As Long
  6.     dwMajorVersion  As Long
  7.     dwMinorVersion As Long
  8.     dwBuildNumber As Long
  9.     dwPlatformId As Long
  10.     szCSDVersion As String * 128
  11.     wServicePackMajor As Integer
  12.     wServicePackMinor As Integer
  13.     wSuiteMask As Integer
  14.     wProductType As Byte
  15.     wReserved As Byte
  16. End Type

  17. Private Const VER_PLATFORM_WIN32_NT As Long = 2
  18. Private Const VER_PLATFORM_WIN32_WINDOWS As Long = 1
  19. Private Const VER_PLATFORM_WIN32s As Long = 0

  20. Private Const PRODUCT_UNLICENSED As Long = &HABCDABCD
  21. Private Const PRODUCT_BUSINESS As Long = &H6
  22. Private Const PRODUCT_BUSINESS_N As Long = &H10
  23. Private Const PRODUCT_CLUSTER_SERVER As Long = &H12
  24. Private Const PRODUCT_DATACENTER_SERVER As Long = &H8
  25. Private Const PRODUCT_DATACENTER_SERVER_CORE As Long = &HC
  26. Private Const PRODUCT_ENTERPRISE As Long = &H4
  27. Private Const PRODUCT_ENTERPRISE_N As Long = &H1B
  28. Private Const PRODUCT_ENTERPRISE_SERVER As Long = &HA
  29. Private Const PRODUCT_ENTERPRISE_SERVER_CORE As Long = &HE
  30. Private Const PRODUCT_ENTERPRISE_SERVER_IA64 As Long = &HF
  31. Private Const PRODUCT_HOME_BASIC As Long = &H2
  32. Private Const PRODUCT_HOME_BASIC_N As Long = &H5
  33. Private Const PRODUCT_HOME_PREMIUM As Long = &H3
  34. Private Const PRODUCT_HOME_PREMIUM_N As Long = &H1A
  35. Private Const PRODUCT_HOME_SERVER As Long = &H13
  36. Private Const PRODUCT_SERVER_FOR_SMALLBUSINESS As Long = &H18
  37. Private Const PRODUCT_SMALLBUSINESS_SERVER As Long = &H9
  38. Private Const PRODUCT_SMALLBUSINESS_SERVER_PREMIUM As Long = &H19
  39. Private Const PRODUCT_STANDARD_SERVER As Long = &H7
  40. Private Const PRODUCT_STANDARD_SERVER_CORE As Long = &HD
  41. Private Const PRODUCT_STARTER As Long = &H8
  42. Private Const PRODUCT_STORAGE_ENTERPRISE_SERVER As Long = &H17
  43. Private Const PRODUCT_STORAGE_EXPRESS_SERVER As Long = &H14
  44. Private Const PRODUCT_STORAGE_STANDARD_SERVER As Long = &H15
  45. Private Const PRODUCT_STORAGE_WORKGROUP_SERVER As Long = &H16
  46. Private Const PRODUCT_UNDEFINED As Long = &H0
  47. Private Const PRODUCT_ULTIMATE As Long = &H1
  48. Private Const PRODUCT_ULTIMATE_N As Long = &H1C
  49. Private Const PRODUCT_WEB_SERVER As Long = &H11
  50. Public Function GetWindowsVersion() As String

  51. ' 变量声明
  52. Dim retOSVersionInf As OSVERSIONINFOEX
  53. Dim retLng As Long

  54. '结构尺寸
  55. retOSVersionInf.dwOSVersionInfoSize = Len(retOSVersionInf)

  56. '获取 Windows 版本
  57. retLng = GetVersionEx(retOSVersionInf)

  58. If retLng = 0 Then
  59.     GetWindowsVersion = "未知"
  60.     Exit Function
  61. End If

  62. With retOSVersionInf

  63. If .dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then
  64.         
  65.         Select Case .dwMajorVersion
  66.             Case 4
  67.                 Select Case .dwMinorVersion
  68.                     Case 0 ' Win 95
  69.                         Select Case .szCSDVersion
  70.                             Case "C" ' OSR2
  71.                                 GetWindowsVersion = "Windows 95 OSR2"
  72.                             Case "B" ' OSR2
  73.                                 GetWindowsVersion = "Windows 95 OSR2"
  74.                             Case Else
  75.                                 GetWindowsVersion = "Windows 95"
  76.                         End Select
  77.                     Case 10 ' Win 98
  78.                         Select Case .szCSDVersion
  79.                             Case "A" ' SE
  80.                                 GetWindowsVersion = "Windows 98 SE"
  81.                             Case Else
  82.                                 GetWindowsVersion = "Windows 98"
  83.                         End Select
  84.                     Case 90 ' Win ME
  85.                         GetWindowsVersion = "Windows ME"
  86.                 End Select
  87.         End Select

  88. ElseIf .dwPlatformId = VER_PLATFORM_WIN32_NT And .dwMajorVersion = 5 Then

  89.     Select Case .dwMinorVersion
  90.         Case 0 ' Win 2000
  91.             Select Case .wProductType
  92.                 Case 1
  93.                     Select Case .wSuiteMask
  94.                         Case &H80 ' 数据中心
  95.                             GetWindowsVersion = "Windows 2000 Data center"
  96.                         Case &H2 ' 高级版本
  97.                             GetWindowsVersion = "Windows 2000 Advanced"
  98.                         Case Else
  99.                             GetWindowsVersion = "Windows 2000"
  100.                     End Select
  101.             End Select
  102.         Case 1 ' Win XP
  103.             Select Case .wProductType
  104.                 Case 1
  105.                     Select Case .wSuiteMask
  106.                         Case &H0 ' Pro
  107.                             GetWindowsVersion = "Windows XP Professional"
  108.                         Case &H200 ' Home
  109.                             GetWindowsVersion = "Windows XP Home"
  110.                         Case Else ' XP
  111.                             GetWindowsVersion = "Windows XP"
  112.                     End Select
  113.             End Select
  114.         Case 2 ' Win Server 2003
  115.             Select Case .wProductType
  116.                 Case 3
  117.                     Select Case .wSuiteMask
  118.                         Case &H2
  119.                             GetWindowsVersion = "Windows Server 2003 Enterprise"
  120.                         Case &H80
  121.                             GetWindowsVersion = "Windows Server 2003 Data center"
  122.                         Case &H400
  123.                             GetWindowsVersion = "Windows Server 2003 Web Edition"
  124.                         Case &H0
  125.                             GetWindowsVersion = "Windows Server 2003 Standard"
  126.                         Case Else
  127.                             GetWindowsVersion = "Windows Server 2003"
  128.                     End Select
  129.             End Select
  130.     End Select
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
 楼主| 发表于 2015-3-21 16:05:33 | 只看该作者

  1.    If .wServicePackMajor > 0 Then
  2.         GetWindowsVersion = GetWindowsVersion & " Service Pack " & .wServicePackMajor & IIf(.wServicePackMinor >0, "." & .wServicePackMinor, vbNullString)
  3.     End If

  4. ElseIf .dwPlatformId = VER_PLATFORM_WIN32_NT And .dwMajorVersion = 6 Then

  5.     Select Case .dwMinorVersion
  6.         Case 0
  7.                 Select Case .wProductType
  8.                     Case PRODUCT_BUSINESS
  9.                         GetWindowsVersion = "Business Edition"
  10.                     Case PRODUCT_BUSINESS_N
  11.                         GetWindowsVersion = "Business Edition (N)"
  12.                     Case PRODUCT_CLUSTER_SERVER
  13.                         GetWindowsVersion = "Cluster Server Edition"
  14.                     Case PRODUCT_DATACENTER_SERVER
  15.                         GetWindowsVersion = "Server Datacenter Edition (full installation)"
  16.                     Case PRODUCT_DATACENTER_SERVER_CORE
  17.                         GetWindowsVersion = "Server Datacenter Edition (core installation)"
  18.                     Case PRODUCT_ENTERPRISE
  19.                         GetWindowsVersion = "Enterprise Edition"
  20.                     Case PRODUCT_ENTERPRISE_N
  21.                         GetWindowsVersion = "Enterprise Edition (N)"
  22.                     Case PRODUCT_ENTERPRISE_SERVER
  23.                         GetWindowsVersion = "Server Enterprise Edition (full installation)"
  24.                     Case PRODUCT_ENTERPRISE_SERVER_CORE
  25.                         GetWindowsVersion = "Server Enterprise Edition (core installation)"
  26.                     Case PRODUCT_ENTERPRISE_SERVER_IA64
  27.                         GetWindowsVersion = "Server Enterprise Edition for Itanium-based Systems"
  28.                     Case PRODUCT_HOME_BASIC
  29.                         GetWindowsVersion = "Home Basic Edition"
  30.                     Case PRODUCT_HOME_BASIC_N
  31.                         GetWindowsVersion = "Home Basic Edition (N)"
  32.                     Case PRODUCT_HOME_PREMIUM
  33.                         GetWindowsVersion = "Home Premium Edition"
  34.                     Case PRODUCT_HOME_PREMIUM_N
  35.                         GetWindowsVersion = "Home Premium Edition (N)"
  36.                     Case PRODUCT_HOME_SERVER
  37.                         GetWindowsVersion = "Home Server Edition"
  38.                     Case PRODUCT_SERVER_FOR_SMALLBUSINESS
  39.                         GetWindowsVersion = "Server for Small Business Edition"
  40.                     Case PRODUCT_SMALLBUSINESS_SERVER
  41.                         GetWindowsVersion = "Small Business Server"
  42.                     Case PRODUCT_SMALLBUSINESS_SERVER_PREMIUM
  43.                         GetWindowsVersion = "Small Business Server Premium Edition"
  44.                     Case PRODUCT_STANDARD_SERVER
  45.                         GetWindowsVersion = "Server Standard Edition (full installation)"
  46.                     Case PRODUCT_STANDARD_SERVER_CORE
  47.                         GetWindowsVersion = "Server Standard Edition (core installation)"
  48.                     Case PRODUCT_STARTER
  49.                         GetWindowsVersion = "Starter Edition"
  50.                     Case PRODUCT_STORAGE_ENTERPRISE_SERVER
  51.                         GetWindowsVersion = "Storage Server Enterprise Edition"
  52.                     Case PRODUCT_STORAGE_EXPRESS_SERVER
  53.                         GetWindowsVersion = "Storage Server Express Edition"
  54.                     Case PRODUCT_STORAGE_STANDARD_SERVER
  55.                         GetWindowsVersion = "Storage Server Standard Edition"
  56.                     Case PRODUCT_STORAGE_WORKGROUP_SERVER
  57.                         GetWindowsVersion = "Storage Server Workgroup Edition"
  58.                     Case PRODUCT_ULTIMATE
  59.                         GetWindowsVersion = "Ultimate Edition"
  60.                     Case PRODUCT_ULTIMATE_N
  61.                         GetWindowsVersion = "Ultimate Edition (N)"
  62.                     Case PRODUCT_UNDEFINED
  63.                         GetWindowsVersion = "An unknown product"
  64.                     Case PRODUCT_UNLICENSED
  65.                         GetWindowsVersion = "Not activated product"
  66.                     Case PRODUCT_WEB_SERVER
  67.                         GetWindowsVersion = "Web Server Edition"
  68.                 End Select
  69.                
  70.                 Select Case .wProductType
  71.                     Case 1 ' Win Vista
  72.                         GetWindowsVersion = "Windows Vista " & GetWindowsVersion
  73.                     Case 3 ' Win Server 2008
  74.                         GetWindowsVersion = "Windows Server 2008 " & GetWindowsVersion
  75.                     Case Else
  76.                         GetWindowsVersion = "Windows Vista " & GetWindowsVersion
  77.                 End Select
  78.                
  79.                     If .wServicePackMajor > 0 Then
  80.                         GetWindowsVersion = GetWindowsVersion & " Service Pack " & .wServicePackMajor &IIf(.wServicePackMinor > 0, "." & .wServicePackMinor, vbNullString)
  81.                     End If
  82.                     
  83.         End Select

  84. End If

  85. GetWindowsVersion = GetWindowsVersion & " [Version: " & .dwMajorVersion & "." & .dwMinorVersion & "." &.dwBuildNumber & "]"

  86. End With


  87. End Function
复制代码


3#
发表于 2015-3-21 17:32:55 | 只看该作者
没有看到获取win7以上的吗

点击这里给我发消息

4#
 楼主| 发表于 2015-3-21 17:34:22 | 只看该作者
这个代码发布时,win8还没出来,你利用取到的号码,改进一下 这个不难的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-2 23:24 , Processed in 0.094144 second(s), 27 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表