Windows SDK

适用于 Windows 11 的 Windows SDK (10.0.26100)提供用于生成 Windows 应用程序的最新标头、库、元数据和工具。 使用此 SDK 为 Windows 11 版本 24H2 和以前的 Windows 版本生成通用 Windows 平台(UWP)和 Win32 应用程序。

提示

Windows 应用 SDK
Windows 应用 SDK 提供一组统一的 API 和工具,这些 API 和工具与 OS 分离,并通过 NuGet 包发布到开发人员。 Windows 11 上的任何桌面应用和下层到 Windows 10 版本 1809 都可以以一致的方式使用这些 API 和工具。

开始

可以通过两种方式获取 Windows SDK:通过选择下载链接或通过在 Visual Studio 2022 Installer 的可选组件中选择“Windows 11 SDK(10.0.26100.0)”从此页面安装它。 安装此 SDK 之前:

上次更新时间:2024 年 9 月

系统要求

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

支持的操作系统

  • Windows 11 版本 21h2 或更高版本:家庭版、专业版、教育版和企业版(UWP 不支持 LTSC)
  • Windows 10 版本 1507 或更高版本:家庭版、专业版、教育版和企业版(UWP 不支持 LTSB/LTSC 和 S 模式)
  • Windows Server 2022、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 要求

在 Windows 8.1 和早期操作系统上安装需要 Windows中 通用 C 运行时的更新。 若要通过 Windows 更新进行安装,请确保在安装 Windows SDK 之前从 Microsoft Update 安装最新的推荐更新和修补程序。

样品

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

以前的 SDK 版本

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

API 亮起

使用新 API 时,请考虑将应用编写为自适应应用,使其在最广泛的 Windows 设备上正确运行。 无论设备和 Windows 版本支持新功能,自适应应用“亮起”,但仅提供检测到的平台版本上可用的功能。 有关实现详细信息,请参阅 版本自适应代码文章

发行说明和已知问题

Windows 11 版本 10.0.26100.1742(2024 年 9 月 24 日发布)

要与 Windows 11 版本 24h2 公共版本相对应的版本。

Windows 11 版本 10.0.26100(2024 年 5 月 22 日发布)

10.0.26100 系列的初始版本,对应于 Windows 11 版本 24h2 预览版。

Windows 11 版本 10.0.22621.3235(2024 年 2 月 29 日发布)

服务更新 10.0.22621.3235。

Windows 11 版本 10.0.22621.2428(2023 年 10 月 24 日发布)

服务更新 10.0.22621.2428。

Windows 11 版本 22H2,内部版本 10.0.22621.1778

更新 10.0.22621.1778。 突出显示的功能包括:

  • WindowTabManager API 允许具有选项卡式接口的应用程序向 Windows shell 提供有关打开的选项卡的信息。
  • HumanPresence API 的更新,以提高易用性,并为支持人机状态功能的传感器添加新设置。
  • RemoteDesktop API 允许应用程序在远程桌面和本地桌面之间切换。
适用于 Windows 11 版本 22H2 的 Windows SDK
  • 服务更新 10.0.22621.755。 包括对 VS 17.4 版本的 ARM64 支持
Windows 10 SDK 版本 2104
  • 已删除 api-ms-win-net-isolation-l1-1-0.lib。 与 api-ms-win-net-isolation-l1-1-0.lib 链接的应用可以将 t 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 舍入规则, 打印完全可表示的浮点数,并将遵循通过调用 请求的舍入模式。 与 legacy_stdio_float_rounding.obj链接时,可以使用旧行为。

  • Windows 应用认证工具包。 在应用认证工具包和 Windows 应用商店中,已将多个新 API 添加到受支持的 API 列表中。 如果在 Visual Studio 中出现灰显或禁用的受支持列表中存在 API,则可以对源文件进行少量更改以访问它们。 有关详细信息,请参阅此 已知问题查找测试的更多更新。

  • 消息编译器(mc.exe)更新:

    • 现在,检测 .mc 文件中的 Unicode 字节顺序标记(BOM)。 如果 .mc 文件以 UTF-8 BOM 开头,它将读取为 UTF-8 文件。 否则,如果它以 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 或 -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 签名是适用于企业和教育的 Microsoft Store 中提供的 Device Guard 功能,它允许企业保证每个应用都来自受信任的源。 请参阅有关 Device Guard 签名的 文档。

  • SDK 标头在 MSVC 编译器 cl.exe(VS 2019 v16.6 中引入)中使用符合标准的 C 预处理器进行编译时,已更新 SDK 标头以解决错误。

  • 已修复:“GdiplusTypes.h 未使用 NOMINMAX 进行编译”。 请参阅 Visual Studio 反馈

  • 使用 /std:c11 或 /std:c17 进行生成时,现在将获得:

    • C99 tgmath.h
    • assert.h 中的 C11 static_assert
    • C11 stdalign.h
    • C11 stdnoreturn.h
  • 面向 ARM64 的 Windows v11 的 Clang/LLVM 与最新的 winnt.h 不兼容

    • 解决方法是,在面向 ARM64 平台时使用 Windows 10 SDK(内部版本 19041)或 clang/LLVM for Windows v10
  • DirectXMath(包括此版本中的版本 3.16)与 ARM64 上的适用于 Windows 的 Clang/LLVM 不兼容。

  • 更改了某些头文件的情况,以便对区分大小写的文件系统进行规范化:

    • OAIdl.h、ObjIdl.h、ObjIdlbase.h、OCIdl.h、Ole2.h、OleAuto.h 和 OleCtl.h 均采用小写形式。
    • 对于适用于 Windows 版本的 Clang/LLVM,若要支持较旧版本和最新的 Windows 10 SDK,且没有警告,请将 -Wno-nonportable-system-include-path 添加到 CLI,或源中的以下 #pragma:

    #ifdef __clang__

    #pragma clang diagnostic ignored "-Wnonportable-system-include-path"

    #endif

Windows 10 SDK 版本 2004 服务更新(2020 年 12 月 16 日发布)

此版本包含以下文件。 如果遇到这些问题,建议尽快更新 SDK 版本以避免出现以下问题:

  • 在链接伞库和本机 OS 库时解决不可预知且难以诊断崩溃(例如 onecoreuap.lib 和 kernel32.lib)
  • 已解决阻止 AppVerifier 正常工作的问题
  • 解决了导致 WACK 失败并出现“任务未能启用 HighVersionLie”的问题

更多资源