Windows SDK

適用於 Windows 11 的 Windows SDK (10.0.22000) 提供了可用來建置 Windows 應用程式所的最新標頭、程式庫、中繼資料及工具。您可以使用這個 SDK 來建置適用於 Windows 11 以及較舊 Windows 版本的通用 Windows 平台 (UWP) 與 Win32 應用程式。

開始使用

您可透過兩種方式取得 Windows SDK:從本頁選取下載連結來安裝該 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 需求

在 Windows 8.1 或更早版本作業系統上安裝需要 KB2999226。若要透過 Windows Update 安裝,請確定安裝 Windows SDK 前已經安裝 Microsoft Update 的最新建議更新和修補程式。

新功能

適用於 Windows 11 的 Windows SDK 可讓您將應用程式更新為與最新版 Windows 作業系統相容的版本。深入了解 Windows 11 的新功能

若要查看 Windows 11 所推出的全新 API,請參閱 Windows 11 組建 22000 中的新 API

使用 ARM64EC 重新建置 ARM 上 Windows 11 作業系統本身的二進位檔,以便由 x64 應用程式所載入的任何系統程式碼都能以原生速度執行。即使存在尚不支援 ARM 的相依性或外掛程式,您仍可利用 ARM64EC 逐漸地轉換應用程式,使其能在 ARM 上以原生速度執行。閱讀公告

範例

您現在可以透過 GitHub 取得 Windows 應用程式範例。您可以瀏覽 GitHub 上的程式碼、從 Git 複製一份存放庫個人複本,或下載所有範例的 ZIP 壓縮封存。我們歡迎您提供意見反應,因此若您有任何問題,都可以在存放庫中反應。這些範例是設計來在支援通用 Windows 平台 (UWP) 的電腦、行動裝置與未來裝置上執行。

先前的 SDK 版本

您可以在封存頁面找到先前發行的 SDK 與模擬器,包括更新詳細資料。

API 光明燈

使用新的 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 套件可讓您將 Windows 執行階段 API 支援新增到 .NET Framework 4.5+ 及 .NET Core 3.0+ 程式庫與應用程式。若要取得 Windows 10 WinRT API 套件,請參閱 Microsoft.Windows.SDK.Contracts nuget 套件
  • 現在,當列印可精確表示浮點數時,printf 系列的函式符合 IEEE 754 進位規則,並將接受透過呼叫 fesetround 所要求的進位模式。與 legacy_stdio_float_rounding.obj 連結時,會提供舊版的行為。
  • Windows 應用程式認證套件。多個新的 API 已新增至應用程式認證套件及 Microsoft Store 中的支援 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。若輸入檔開頭不是 BOM,將會使用目前的字碼頁 (CP_ACP) 讀取。為了回溯相容,如果指定 -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 中推出的 /Zc:preprocessor) 內使用符合標準之 C 前置處理器進行編譯時所發生的錯誤。
  • 修正:「GdiplusTypes.h 無法以 NOMINMAX 進行編譯」。查看 Visual Studio 意見反應
  • 使用 /std:c11 或 /std:c17 建置時,您現在會得到:
    • C99 tgmath.h
    • assert.h 中的 C11 static_assert
    • C11 stdalign.h
    • C11 stdnoreturn.h
  • 以 ARM64 為目標的 Clang/LLVM for Windows v11 與最新 winnt.h 不相容
    • 因應措施是在已 ARM64 平台為目標時,使用舊版的 Windows 10 SDK (組建 19041) 或適用於 Windows v10 的 clang/LLVM
  • 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 和 kernel32.dll) 時診斷損毀情況且無法預期的問題
  • 已解決導致 AppVerifier 無法運作的問題
  • 已解決導致 WACK 失敗並出現「工作無法啟用 HighVersionLie」的問題

提供意見反應

如需已知問題,請參閱 winapi-sdk Q&A

若要提出新的開發人員功能要求,請透過「開發人員平台/API」目錄下的意見反應中樞應用程式提交。

更多資源

下載與工具

取得最新版 Visual Studio 與 Windows 10 開發工具。

深入了解

SDK 封存

尋找舊版 Window SDK 及其他工具。

查看封存

Windows 部落格

訂閱我們的部落格,以隨時掌握最新 SDK 正式發行前小眾測試版的消息。

獲取 SDK 正式發行前小眾測試版的消息

Windows 生命週期資料表

尋找 Windows 版本更新與結束支援的重要日期。

查看資料表