获取Windows操作系统版本

获取PC Windows系统版本:

下面是具体实现:

bool GetOsVersion(int* major, int* minor, int* build) {
  OSVERSIONINFO info = {0};
  info.dwOSVersionInfoSize = sizeof(info);
  if (GetVersionEx(&info)) {
    if (major)
      *major = info.dwMajorVersion;
    if (minor)
      *minor = info.dwMinorVersion;
    if (build)
      *build = info.dwBuildNumber;
    return true;
  }
  return false;
}

enum WindowsMajorVersions {
  kWindows2000 = 5,
  kWindowsVista = 6,
  kWindows10 = 10,
};

inline bool IsWindowsVistaOrLater() {
  int major;
  return (GetOsVersion(&major, nullptr, nullptr) && major >= kWindowsVista);
}

inline bool IsWindowsXpOrLater() {
  int major, minor;
  return (GetOsVersion(&major, &minor, nullptr) &&
          (major >= kWindowsVista || (major == kWindows2000 && minor >= 1)));
}

inline bool IsWindows8OrLater() {
  int major, minor;
  return (GetOsVersion(&major, &minor, nullptr) &&
          (major > kWindowsVista || (major == kWindowsVista && minor >= 2)));
}

inline bool IsWindows10OrLater() {
  int major;
  return (GetOsVersion(&major, nullptr, nullptr) && (major >= kWindows10));
}

除此之外还有其他办法,例如:

  // 1) Check if Windows version is Vista SP1 or later.
  //
  // CoreAudio is only available on Vista SP1 and later.
  //
  OSVERSIONINFOEX osvi;
  DWORDLONG dwlConditionMask = 0;
  int op = VER_LESS_EQUAL;

  // Initialize the OSVERSIONINFOEX structure.
  ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
  osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
  osvi.dwMajorVersion = 6;
  osvi.dwMinorVersion = 0;
  osvi.wServicePackMajor = 0;
  osvi.wServicePackMinor = 0;
  osvi.wProductType = VER_NT_WORKSTATION;

  // Initialize the condition mask.
  VER_SET_CONDITION(dwlConditionMask, VER_MAJORVERSION, op);
  VER_SET_CONDITION(dwlConditionMask, VER_MINORVERSION, op);
  VER_SET_CONDITION(dwlConditionMask, VER_SERVICEPACKMAJOR, op);
  VER_SET_CONDITION(dwlConditionMask, VER_SERVICEPACKMINOR, op);
  VER_SET_CONDITION(dwlConditionMask, VER_PRODUCT_TYPE, VER_EQUAL);

  DWORD dwTypeMask = VER_MAJORVERSION | VER_MINORVERSION |
                     VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR |
                     VER_PRODUCT_TYPE;

  // Perform the test.
  BOOL isVistaRTMorXP = VerifyVersionInfo(&osvi, dwTypeMask, dwlConditionMask);
  if (isVistaRTMorXP != 0) {
    RTC_LOG(LS_VERBOSE)
        << "*** Windows Core Audio is only supported on Vista SP1 or later"
        << " => will revert to the Wave API ***";
    return false;
  }

在这里插入图片描述

尽管微软的新一代操作系统命名为Windows 10,但在内核版本方面其实变化不大。此前发布的三个技术预览版Windows 10的内核版本均为6.4,而Win 8.1的内核版本则是6.3,这似乎意味着内核方面并未改变太多。

不过这个情况在下一次Win10预览版更新时候应该就会发生改变了,根据报道,目前微软内部已经完成了Build 9888版Win10的编译工作,其内核已经从6.4升级为10.0,怒刷了一次版本号。

此外,微软也在IE开发者中心发布了通知,宣布Winddows NT内核版本号将从6.4提升到10.0。

这应该是迄今为止微软对Windows内核版本所做的最大一次变动了,看来微软对Win10是下了血本,尽最大的努力让它获得成功。

下面是最近几代Windows的内核版本号:

Windows Vista:6.0

Windows 7:6.1

Windows 8:6.2

Windows 8.1:6.3

Windows 10 Build 9841/9860/9879:6.4

Windows 10 Build 9888:10.0

PS:http://news.mydrivers.com/1/338/338566.htm

PS:Windows版本号列表

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值