# 徹底釐清 Windows 10 與 Windows Server 的版本編號

這些年一直對 Windows 10 與 Windows Server 的**版本編號**困擾著，經常會聽到什麼 **Windows 10 周年更新**、**Windows 10 創作者更新** 之類的名稱，完全摸不著頭緒，你也至少給個年份或數字之類的吧。從 Windows Server 2016 開始，又開始區分 LTSC 與 SAC 通道，又是一場眼花撩亂了版號大戰。今天我就用這篇文章來好好釐清背後的邏輯吧！

### 認識 Windows 10 版本

第一版的 Windows 10 從 2015 年七月推出，可以說是末日的 Windows 版本，今後所有的 Windows 通通都叫做 `Windows 10` 版。這樣的決定是好是壞很難說，對一般使用者來說可能不礙事，但對開發人員就會很困擾。因為不同版本之間造成的差異，就會有一定程度的相容性問題，就以 **Windows Containers** 來說，不同的 Windows 10 版本，其可以使用的 Base Image 就是不一樣的，所以我們必須非常清楚的區分不同 Windows 10 版本的細部差異！

正常人都會認為 **Windows 10** 的版本就是 `10` 不是嗎？錯！

就以我現在用的這台筆電為例，目前安裝的 Windows 10 版本為 `10.0.17763.379`，你可以從**命令提示字元**輸入 `ver` 命令查詢得知，預設進入**命令提示字元**也會直接在第一行看到版本號：

```log
Microsoft Windows [版本 10.0.17763.379]
(c) 2018 Microsoft Corporation. 著作權所有，並保留一切權利。

C:\>ver

Microsoft Windows [版本 10.0.17763.379]
```

如果你執行 `winver` 命令的話，還會看到視窗版本的版本資訊，此時你又會多看到另一個**版本**資訊：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/2d7001f3d644d6dc723a-image_3193.png)

這裡所顯示的版本，將區分為：

1.  版本: `1809`
2.  OS 組建: `17763.379`

寫到這裡，各位已經可以看到以下 4 種版本資訊：

1.  `10`
2.  `10.0.17763.379`
3.  `1809`
4.  `17763.379`

但這還不是最困擾的，因為 Microsoft 還對不同的 Windows 10 版本設定不同的「行銷名稱」，你可能多多少少會聽到以下版本名稱：

-   Windows 10 十一月更新
-   Windows 10 周年更新
-   Windows 10 創作者更新
-   Windows 10 秋季創作者更新
-   Windows 10 四月更新
-   Windows 10 十月更新

其相對應的英文名稱為：

-   Windows 10 November Update (version 1511)
-   Windows 10 Anniversary Update (version 1607)
-   Windows 10 Creators Update (version 1703)
-   Windows 10 Fall Creators Update (version 1709)
-   Windows 10 April 2018 Update (version 1803)
-   Windows 10 October 2018 Update (version 1809)
-   Windows 10 May 2019 Update (version 1903)

國外的網站，大多數網站都會在這些行銷名稱後面加上 version 版本號。但是在國內，許多媒體並沒有特別標示版本或年份，真的會讓人無從判斷這些版本的新舊。

### 重新認識 Windows 10 版本編號

身為一位開發人員，需要能夠區分的版本，主要就是 `10.0.17763.379` 這項。不過這個編號比較難記，記得另一個 `1809` 版號可能會簡單需多。

所謂的 `1809` 其實是 2018 年 09 月釋出的意思，但是又不一定是這樣，因為最近一版的 Windows 10 雖然版本為 `1809`，但行銷名稱卻是 `October 2018 Update` (十月更新)，是不是非常 OOXX 啊！

接著，我們來拆解 `10.0.17763.379` 版本的細節，這 4 個數字分別代表的意義是：

-   作業系統的**主要版本** (Major Version Number)
-   作業系統的**次要版本** (Minor Version Number)
-   作業系統的**核心組建版本** (OS Build Version)
-   作業系統的**更新組建版本** (Update Build Revision) (UBR)

你也可以透過以下 PowerShell 取得相關版本資訊：

```powershell
Get-ItemProperty -Path "HKLM:\Software\Microsoft\Windows NT\CurrentVersion" | Select ProductName,ReleaseId,InstallationType,CurrentMajorVersionNumber,CurrentMinorVersionNumber,CurrentBuild,UBR
```

```log
ProductName               : Windows 10 Pro
ReleaseId                 : 1809
InstallationType          : Client
CurrentMajorVersionNumber : 10
CurrentMinorVersionNumber : 0
CurrentBuild              : 17763
UBR                       : 379
```

從上述命令的輸出可以看見，原來 `1809` 不能稱為 `版本`，叫做 `ReleaseId` (**發行代號**) 應該比較合理些，走我們軟體這行真的很可憐，我們的工作需要清晰明瞭的邏輯，但卻經常被這些似是而非的名詞荼毒。

**主要版本**與**次要版本**就不用說了，因為這幾年的 Windows 10 這兩版都沒有動過，但**核心組建版本**與**更新組建版本**就相對重要許多。

-   核心組建版本
    
    -   基本上不同的**核心組建版本**對我們帶來最大的影響，就是 Windows Containers 基底映像 (Base Image) 的相容性。不同的作業系統核心組建版本，只能執行特定核心組建版本的基底映像，所以選錯版本就無法正確執行容器。
-   更新組建版本
    
    -   更新組建版本不同，不影響 Windows Containers 執行，只差在安全性與功能修正而已，不牽涉核心調整。

以下我列出目前已知的所有 Windows 10 版本資訊：

-   Windows 10 (initial version released July 2015) (Build `10240`) (version `1507`)
-   Windows 10 version `1511` (Build `10586`)
    -   Windows 10 November Update (version 1511)
    -   Windows 10 十一月更新
-   Windows 10 version `1607` and Windows Server 2016 (LTSC) (Build `14393`)
    -   Windows 10 Anniversary Update (version 1607)
    -   Windows 10 周年更新
-   Windows 10 version `1703` (Build `15063`)
    -   Windows 10 Creators Update (version 1703)
    -   Windows 10 創作者更新
-   Windows 10 version `1709` (Build `16299`)
    -   Windows 10 Fall Creators Update (version 1709)
    -   Windows 10 秋季創作者更新
-   Windows 10 version `1803` (Build `17134`)
    -   Windows 10 April 2018 Update (version 1803)
    -   Windows 10 四月更新
-   Windows 10 version `1809` and Windows Server 2019 (LTSC) (Build `17763`)
    -   Windows 10 October 2018 Update (version 1809)
    -   Windows 10 十月更新
-   Windows 10 version `1903` (Build `18362`) (Code name: **19H1**)
    -   ([Announcing Windows 10 Insider Preview Build 18362](https://blogs.windows.com/windowsexperience/2019/03/20/announcing-windows-10-insider-preview-build-18362/))

### 認識 Windows Server 版本

從 Windows Server 2016 開始，伺服器作業系統將再區分兩種**發行通道** (Channel)，分別是 **長期維護通道** (Long-Term Servicing Channel) (`LTSC`)，與 **半年通道** (Semi-Annual Channel) (`SAC`)。

簡單來說，所謂 **發行通道** 講的就是不同的 **產品線**，有著不同的**技術支援週期**與**功能差異**。如果要類比之前所有的 Windows Server 版本，我們可以說：「**以前的 Windows Server 只有 `LTSC` 版本，從 Windows Server 2016 開始才額外推出 `SAC` 版本**」。

-   長期維護通道 (LTSC)
    
    -   每 2 ~ 3 年推出一個 LTSC 版本
    -   享有 5 年主流技術支援與另外 5 年延伸技術支援
    -   系統更新只會包含安全性更新，不會包含新功能更新
    -   LTSC 版本可以透過既有的微軟銷售通路取得授權
-   半年通道 (SAC)
    
    -   每半年推出一個 SAC 版本
    -   僅享有 18 個月的技術支援
    -   系統更新會包含安全性更新與新功能更新
    -   通常下一代的 LTSC 版本會包含曾經在 SAC 推出的新功能
    -   SAC 版本只有搭配軟體保證的大量授權客戶與透過 Azure Marketplace 才能取得

> 請注意：`SAC` 不是 `LTSC` 的加強版，也不是 `LTSC` 的升級版，所以不能直接從 `LTSC` 升級到 `SAC` 版本，他們兩個就是完全獨立且不同的伺服器作業系統產品。

我們到目前為止已經聽到過幾種「版本」了？不知道各位亂了沒？我之前是被困擾很久啦！XD

-   Windows 10
-   1809
-   17763
-   379
-   LTSC
-   SAC

目前為止，從 Windows Server 2016 開始的 `LTSC` 通道推出了以下兩個版本：

-   Windows Server 2016 (LTSC) (Build `14393`.`0`)
-   Windows Server 2019 (LTSC) (Build `17763`.`379`)

我以 **Windows Server 2019** (`LTSC`) 為例，在主機上執行以下 PowerShell 命令：

```powershell
Get-ItemProperty -Path "HKLM:\Software\Microsoft\Windows NT\CurrentVersion" | Select ProductName,ReleaseId,InstallationType,CurrentMajorVersionNumber,CurrentMinorVersionNumber,CurrentBuild,UBR
```

你會得到以下資訊：

```log
ProductName               : Windows Server 2019 Datacenter
ReleaseId                 : 1809
InstallationType          : Server
CurrentMajorVersionNumber : 10
CurrentMinorVersionNumber : 0
CurrentBuild              : 17763
UBR                       : 379
```

此時你會發現到，Windows Server 2019 (`LTSC`) 的版本資訊幾乎跟 Windows 10 (version `1809`) 一模一樣，只有 `ProductName` 與 `InstallationType` 不同而已。沒錯，這兩個作業系統共用完全相同的核心組建版本！這同時也意味著 Windows Containers 也可以共用完全相同的基底映像(Base Image)。

上述資訊中的 `InstallationType` 則代表安裝的類型，因為 `LTSC` 版本支援 **桌面體驗版本** (Desktop Experience) 與 **伺服器核心** (Server Core) 版本。但 `SAC` 版本就僅支援 **伺服器核心** (Server Core) 版本而已，完全沒有 GUI 介面，只能用命令提示字元與 PowerShell 管理伺服器。

目前為止，Windows Server 的 `SAC` 通道推出了以下 3 個版本：

-   Windows Server, version 1709 (SAC) (Build `16299`.`15`)
-   Windows Server, version 1803 (SAC) (Build `17134`.`648`)
-   Windows Server, version 1809 (SAC) (Build `17763`.`379`)

從上述版本編號來看，你會發現 Microsoft 從 `SAC` 通道的版本中，完全從產品名稱中移除了 `2016` 或 `2019` 字樣，取而代之的就是 `1709` 或 `1809` 之類的 `ReleaseId`！

我以 **Windows Server, version 1809** (`SAC`) 為例，在主機上執行以下 PowerShell 命令：

```powershell
Get-ItemProperty -Path "HKLM:\Software\Microsoft\Windows NT\CurrentVersion" | Select ProductName,ReleaseId,InstallationType,CurrentMajorVersionNumber,CurrentMinorVersionNumber,CurrentBuild,UBR
```

你會得到以下資訊：

```log
ProductName               : Windows Server Datacenter
ReleaseId                 : 1809
InstallationType          : Server Core
CurrentMajorVersionNumber : 10
CurrentMinorVersionNumber : 0
CurrentBuild              : 17763
UBR                       : 379
```

你可以比較一下跟本文稍早列出的 **Windows Server 2019** (`LTSC`) 版本資訊相比，你會發現從 `Productname` 中已經看不見 `2019` 字樣，而是只寫 **Windows Server Datacenter** 而已，但是其他版本資訊卻又完全一樣，這件事就困擾我一段時間，我曾經一度認為 `Windows Server 2019` 是不是就完全等於 `Windows Server, version 1809` 呢？後來我的理解是，沒錯，只要核心建置版本完全一樣，就可以視為完全相同的作業系統，只是「產品名稱」不同而已！

所以 `Windows 10, version 1809` 完全等於 `Windows Server 2019`，也完全等於 `Windows Server, version 1809`，只是產品名稱與內建的功能不同而已，這三套共用完全相同的作業系統核心 (`10.0.17763.379`)！

最後，我們可以從 Windows Server 執行以下命令，取得更細部的版本資訊：

```powershell
Get-ComputerInfo | Select WindowsProductName, WindowsVersion, WindowsInstallationType, OsServerLevel, OsVersion, OsHardwareAbstractionLayer
```

從 `Windows Server 2019 (LTSC)` 得到的結果是：

```log
WindowsProductName         : Windows Server 2019 Datacenter
WindowsVersion             : 1809
WindowsInstallationType    : Server
OsServerLevel              : FullServer
OsVersion                  : 10.0.17763
OsHardwareAbstractionLayer : 10.0.17763.194
```

從 `Windows Server, version 1809 (SAC)` 得到的結果是：

```log
WindowsProductName         : Windows Server Datacenter
WindowsVersion             : 1809
WindowsInstallationType    : Server Core
OsServerLevel              : ServerCore
OsVersion                  : 10.0.17763
OsHardwareAbstractionLayer : 10.0.17763.194
```

這裡我們多看到一個新的 `OsHardwareAbstractionLayer` 版本編號 (`10.0.17763.194`)，跟同一台的 **Update Build Revision** (UBR) (`10.0.17763.379`) 所列的不太一樣，但因為我這裡的 Windows Server 是跑在 Azure 的 VM 中，這台 VM 的 Host 主機也是一台 Windows Server，感覺這個版本應該是 Host 主機的作業系統版本才是，但我找不到佐證資訊證明這個推測。

### 相關連結

-   [Windows 10 and Windows Server 2019 update history](https://support.microsoft.com/en-us/help/4464619)
-   [Windows 10 and Windows Server 2016 update history](https://support.microsoft.com/en-us/help/4000825)
-   [Windows 10 企業版 LTSC | Microsoft Docs](https://learn.microsoft.com/zh-tw/windows/whats-new/ltsc/)
-   [What's New in Windows Server version 1809](https://learn.microsoft.com/en-us/windows-server/get-started/whats-new-in-windows-server-1809)
-   [What's new in Windows Server 2019](https://learn.microsoft.com/en-us/windows-server/get-started-19/whats-new-19)
-   [Windows Server servicing channels: LTSC and SAC](https://learn.microsoft.com/en-us/windows-server/get-started-19/servicing-channels-19)
-   [Windows Server release information | Microsoft Docs](https://learn.microsoft.com/en-us/windows-server/get-started/windows-server-release-info)
-   [Windows 10 - Wikipedia](https://en.wikipedia.org/wiki/Windows_10)
-   Docker Images
    -   [Windows Server Core - Docker Hub](https://hub.docker.com/_/microsoft-windows-servercore)
    -   [Windows Server Core Insider - Docker Hub](https://hub.docker.com/_/microsoft-windows-servercore-insider)
    -   [Nano Server - Docker Hub](https://hub.docker.com/_/microsoft-windows-nanoserver)
    -   [Nano Server Insider - Docker Hub](https://hub.docker.com/_/microsoft-windows-nanoserver-insider)
    -   [Windows - Docker Hub](https://hub.docker.com/r/microsoft/windows)
