服务器2012r2操作系统,Windows 8.1 和 Windows Server 2012 R2 中的操作系统版本更改

Windows 8.1 和 Windows Server 2012 R2 中的操作系统版本更改

05/31/2018

本文内容

平台

客户端- Windows 8.1

服务器- Windows Server 2012 R2

描述

我们对 GetVersion (Ex) Api 在 Windows 8.1 中的工作方式进行了一些重大更改,这是由于 GetVersion (Ex) Api 在过去使用的方式引起的。

在以前版本的 Windows 中,调用 GetVersion (Ex) Api 将返回操作系统 (OS) 的实际版本,除非应用程序兼容性填充程序已经缓解了该进程,以使其成为不同版本。 此操作是在临时基础上完成的,并且在 Microsoft 可以合理地在版本中填充的进程数量相对不完整。 许多应用程序都在破裂,因为由于版本检查设计不当,它们不会填充。

执行版本检查的一个原因是,警告用户应用程序需要在更高版本的操作系统上运行。 然而,由于检查不佳,应用通常会错误地警告他们需要在 Windows XP 或更高版本上运行,这当然是最新的操作系统。 通常情况下,最新的操作系统会运行应用程序,而不会出现任何问题。

形式

在 Windows 8.1 中,弃用 (Ex) Api 已弃用。 这意味着,当你仍可调用这些 API 函数时,如果你的应用程序没有专门 Windows 8.1 目标,则这些函数将返回 Windows 8 版本 (6.2) 。

解决方案

添加应用程序清单

为了使应用面向 Windows 8.1,需要为应用的可执行文件包括 应用 (可执行文件) 清单 。 然后,在清单的 " < 兼容性 > " 部分中,需要为要声明应用支持的每个 Windows 版本添加一个 < supportedOS > 元素。

下面的示例显示一个应用程序的应用程序清单文件,该文件支持从 Windows Vista 到 Windows 8.1 的 Windows 的所有版本:

type="win32"

name="Contoso.ExampleApplication.ExampleBinary"

version="1.2.3.4"

processorArchitecture="x86"

/>

Contoso Example Application

上面标记的行 * ADD THIS LINE * 显示了如何准确地将应用程序定位到 Windows 8.1。

在应用程序清单中声明对 Windows 8.1 的支持在以前的操作系统上运行你的应用时不会有任何影响。

使用 VersionHelpers 而不是 GetVersion (Ex)

Windows 8.1 为 GetVersion (Ex) (称为 VersionHelpers)引入了新的替换 API 函数。 它们非常易于使用;你需要做的就是 #include 。 VersionHelpers 头文件中可用的内联函数允许你的代码询问操作系统是 Windows 的给定版本还是更高版本。

示例 例如,如果你的应用程序需要 Windows 8 或更高版本,请使用以下测试:

#include

// ...

if (!IsWindows8OrGreater())

{

MessageBox(NULL, "You need at least Windows 8", "Version Not Supported", MB_OK);

}

可用的 VersionHelper API 函数包括:

#define VERSIONHELPERAPI FORCEINLINE BOOL

VERSIONHELPERAPI IsWindowsXPOrGreater();

VERSIONHELPERAPI IsWindowsXPSP1OrGreater();

VERSIONHELPERAPI IsWindowsXPSP2OrGreater();

VERSIONHELPERAPI IsWindowsXPSP3OrGreater();

VERSIONHELPERAPI IsWindowsVistaOrGreater();

VERSIONHELPERAPI IsWindowsVistaSP1OrGreater();

VERSIONHELPERAPI IsWindowsVistaSP2OrGreater();

VERSIONHELPERAPI IsWindows7OrGreater();

VERSIONHELPERAPI IsWindows7SP1OrGreater();

VERSIONHELPERAPI IsWindows8OrGreater();

VERSIONHELPERAPI IsWindows8Point1OrGreater();

VERSIONHELPERAPI IsWindowsServer();

它们将返回 TRUE 或 FALSE,具体取决于你所询问的问题,你只需定义你支持的最低级别操作系统。

资源

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值