Windows SDK

适用于 Windows 11 的 Windows SDK (10.0.22000) 可提供用于生成 Windows 应用程序的最新标头、库、元数据和工具。使用此 SDK 生成适用于 Windows 11 和旧版 Windows 的通用 Windows 平台 (UWP) 应用和 Win32 应用。

即刻体验

通过以下两种方式可以安装 Windows SDK:选择本页上的下载链接,或在 Visual Studio 2019 安装程序的可选组件中选择“Windows 11 SDK (10.0.22000)”。

安装此 SDK 之前:

  1. 查看所有系统要求
  2. 请在安装前退出 Visual Studio。
  3. 检查发行说明和已知问题
下载安装程序 下载 .ISO 更新时间:2021/10/04

系统要求

Windows SDK 具有以下最低系统要求:

受支持的操作系统

  • 通用 Windows 平台 (UWP) 应用开发
    • Windows 10 版本 1507 或更高版本:家庭版、专业版、教育版和企业版(LTSB 和 S 不受支持)
    • Windows Server 2019、Windows Server 2016 和 Windows Server 2012 R2(仅命令行)
  • Win32 应用开发
    • Windows 10 版本 1507 或更高版本
    • Windows Server 2019、Windows Server 2016 和 Windows Server 2012 R2(仅命令行)
    • Windows 8.1
    • Windows 7 SP1

(并非所有工具都在较早的操作系统上受支持)

硬件要求

  • 1.6 GHz 或更快的处理器
  • 1 GB 的 RAM
  • 4 GB 的可用硬盘空间

其他 SDK 要求

需要 KB2999226 才能在 Windows 8.1 和更早的操作系统上进行安装。若要通过 Windows 更新安装,请确保在安装 Windows SDK 之前从 Microsoft 更新安装推荐的最新更新和修补程序。

最近更新

适用于 Windows 11 的 Windows SDK 允许更新应用以适用于最新版本的 Windows OS。详细了解 Windows 11 中的新功能

要查看 Windows 11 中引入的新 API,请参阅 Windows 11 版本 22000 中的新 API

使用 ARM64EC 重新生成了 Windows 11 on ARM 操作系统本身的二进制文件,以便 x64 应用加载的任何系统代码都以本机速度运行。利用 ARM64EC 逐渐将应用过渡为以本机速度在 ARM 上运行,即使你的依赖项或插件尚不支持 ARM 也是如此。阅读公告

示例

现在可通过 GitHub 获取 Windows 应用示例。你可在 GitHub 上浏览代码、从 Git 克隆个人储存库副本,或者下载包含所有示例的压缩文档。我们乐于接收反馈,因此如果你有问题或疑问,你可以随时在存储库中提出问题。这些示例专用于在支持通用 Windows 平台 (UWP) 的桌面、移动设备和将来设备上运行。

以前的 SDK 版本

可在存档页面上找到以前发布的 SDK 和模拟器(包括更新详细信息)。

API Light Up

当你想要使用新的 API 时,考虑编写自适应应用,以便在最广泛的 Windows 设备上正确运行。只要设备和 Windows 版本能够提供支持,自适应应用的新特性就能发挥功能,否则只能在被检测到的平台版本上提供可用功能。有关实现详细信息,请参阅版本自适应代码一文。

发行说明和已知问题

Windows 10 SDK,版本 2104

  • 删除了 api-ms-win-net-isolation-l1-1-0.lib。链接到 api-ms-win-net-isolation-l1-1-0.lib 的应用可改为链接到 OneCoreUAP.lib。
  • 删除了 irprops.lib。链接到 irprops.lib 的应用可直接改为链接到 bthprops.lib。
  • 已将 ENUM tagServerSelection 从 wuapicommon.h 移动到了 wupai.h 并删除了标头。如果你想使用 ENUM tagServerSelection,就需要包含 wuapi.h 或 wuapi.idl。
  • 使用 Windows 10 WinRT API 包,可以向 .NET Framework 4.5+ 和 .NET Core 3.0+ 库和应用添加最新 Windows 运行时 API 支持。若要访问 Windows 10 WinRT API 包,请参阅 Microsoft.Windows.SDK.Contracts nuget 包
  • printf 系列的函数现将在打印可精确表示的浮点数时遵循 IEEE 754 舍入规则,并将采用通过调用 fesetround 请求的舍入模式。在与 legacy_stdio_float_rounding.obj 链接时,可使用旧行为。
  • Windows 应用认证工具包。应用认证工具包和 Windows Store 中受支持的 API 列表中添加了几个新的 API。如果某些 API 虽然包含在受支持的列表中,但在 Visual Studio 中显示为灰色或已禁用,可以对源文件进行少量更改,以便访问它们。有关更多详细信息,请参阅此已知问题查找更多测试更新
  • 消息编译器 (mc.exe) 更新:
    • 现可检测 .mc 文件中的 Unicode 字节顺序标记 (BOM)。如果 .mc 以 UTF-8 BOM 开头,则该文件将作为 UTF-8 文件读取。否则,如果 .mc 以 UTF-16LE BOM 开头,则该文件将作为 UTF-16LE 文件读取。如果指定了 -u 参数,则它将作为 UTF-16LE 文件读取。否则,将使用当前代码页 (CP_ACP) 读取。
    • 现在可以避免 MC 生成的 C/C++ ETW 帮助程序中由配置宏冲突引起的单一定义规则 (ODR) 问题(例如,当具有 MCGEN_EVENTWRITETRANSFER 定义冲突的两个 .cpp 文件链接到同一个二进制文件时,MC 生成的 ETW 帮助程序现在将遵循每个 .cpp 文件中 MCGEN_EVENTWRITETRANSFER 的定义,而不是随意选取其中一个)。
  • Windows 跟踪预处理器 (tracewpp.exe) 更新:
    • 支持 Unicode 输入(.ini、.tpl 和源代码)文件。以 UTF-8 或 UTF-16 字节顺序标记 (BOM) 开头的输入文件将作为 Unicode 读取。将使用当前代码页 (CP_ACP) 读取不以 BOM 开头的输入文件。为实现后向兼容,如果指定了 -UnicodeIgnore 命令行参数,以 UTF-16 BOM 开头的文件将被视作空文件。
    • 支持 Unicode 输出 (.tmh) 文件。默认情况下,输出文件将使用当前代码页 (CP_ACP) 进行编码。使用命令行参数 -cp:UTF-8 or -cp:UTF-16 生成 Unicode 输出文件。
    • 行为更改 :tracewpp 现在会将所有输入文本转换为 Unicode,以 Unicode 格式进行处理,并将输出文本转换为指定的输出编码。早期版本的 tracewpp 会避免 Unicode 转换,并在执行文本处理时假设单字节字符集。在输入文件与当前代码页不符时,这可能导致行为更改。如果出现这种问题,请考虑将输入文件转换为 UTF-8 (使用 BOM),并/或使用 -cp:UTF-8 命令行参数避免编码多义性。
  • TraceLoggingProvider.h 更新:
    • 避免由配置宏冲突引起的单一定义规则 (ODR) 问题(例如,当具有 TLG_EVENT_WRITE_TRANSFER 定义冲突的两个 .cpp 文件链接到同一个二进制文件时,TraceLoggingProvider.h 帮助程序现在将遵循每个 .cpp 文件中 TLG_EVENT_WRITE_TRANSFER 的定义,而不是随意选取其中一个)。
    • 在 C++ 代码中,TraceLoggingWrite 宏已更新,让使用可变参数模板的相似事件可以更好地共享代码。
  • 为应用签名。Device Guard 签名是一项 Device Guard 功能,可用于适用于企业和教育的 Microsoft Store,使企业能够保证每个应用都来自受信任的来源。请参阅有关 Device Guard 签名的文档
  • SDK 标头已经更新,以解决在 MSVC 编译器 cl.exe(/Zc:preprocessor,在 VS 2019 v16.6 中引入)中使用符合标准的 C 预处理器进行编译时的错误。
  • 已修复:“GdiplusTypes.h 不能用 NOMINMAX 编译”。查看 Visual Studio 反馈
  • 使用 /std:c11 或 /std:c17 进行生成时,现在将会获得:
    • C99 tgmath.h
    • C11 static_assert in assert.h
    • C11 stdalign.h
    • C11 stdnoreturn.h
  • 针对 ARM64 的 Clang/面向 Windows v11 的LLVM 与最新的 winnt.h 不兼容
    • 避开此问题的方法是,在针对 ARM64 平台时,使用上一版本的 Windows 10 SDK (版本19041)或 Clang/面向 Windows v10 的 LLVM
  • 在 ARM64 上,DirectXMath(此次发布中包括 3.16 版本)与 Clang/面向 Windows v10 的 LLVM 兼容。
  • 更改了某些头标头文件的大小写,以便对其进行规范化以适应区分大小写的文件系统:
    • OAIdl.h、ObjIdl.h、ObjIdlbase.h、OCIdl.h、Ole2.h、OleAuto.h 以及 OleCtl.h 都改为小写。
    • 对于 Clang/面向 Windows 的 LLVM 版本,为了同时支持旧版本和最新 Windows 10 SDK 而不生成警告,请在 CLI 中添加 `-Wno-nonportable-system-include-path`,或者在源代码中添加以下 #pragma:

      #ifdef __clang__
      #pragma clang diagnostic ignored "-Wnonportable-system-include-path"
      #endif

Windows 10 SDK,版本 2004 服务更新(发布于 2020/12/16)

    此版本包含以下文件。如果遇到这些问题,建议尽快更新 SDK 版本来避免它们:
  • 解决了当同时链接 umbrella 库和本机 OS 库(例如 onecoreuap.lib 和 kernel32.lib)时,无法预测且难以诊断故障的问题
  • 解决了阻止 AppVerifier 工作的问题
  • 解决了导致 WACK 失败且出现“任务未能启用 HighVersionLie”的问题

提供反馈

有关已知问题,请参阅 winapi-sdk 问答

若要提交新的开发人员功能请求,请在“反馈中心”应用中“开发人员平台/API”类别下提交。

更多资源

下载和工具

获取最新版本的 Visual Studio 和 Windows 10 开发工具。

了解详细信息

SDK 存档

查找 Windows SDK 和其他工具的之前版本。

查看档案

Windows 博客

请订阅我们的博客,实时跟进最新 SDK 外部测试版。

获取 SDK 外部测试版新闻

Windows 生命周期情况说明书

了解 Windows 发布更新和支持结束的关键日期。

查看情况说明书