![什么是 Windows 构建字符串以及如何找到它?](https://linux22.com/image/1461344/%E4%BB%80%E4%B9%88%E6%98%AF%20Windows%20%E6%9E%84%E5%BB%BA%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%BB%A5%E5%8F%8A%E5%A6%82%E4%BD%95%E6%89%BE%E5%88%B0%E5%AE%83%EF%BC%9F.png)
早期版本的 Microsoft Windows 操作系统都附有已知的“版本字符串”,用于识别。专注于 Beta 软件测试的网站通常会列出这些版本字符串的完整列表(或多或少)。
以下仅是 Windows 10 的构建字符串的几个示例,按照向 Beta 测试人员发布的顺序排列。
- 6.4.9879.fbl_发布.141103-1722
- 10.0.9926.fbl_awesome1501.150119-1648
- 10.0.10014.winmain_prs.150205-1859
- 10.0.10061.fbl_impressive.150410-2039
- 10.0.10163.winmain_prs.150630-1700
- 10.0.10166.fbl_impressive.150703-1818
- 10.0.10176.16384.th1.150705-1526
- 10.0.10240.16384.th1.150709-1700
我知道第一组数字代表主版本号,第二组数字代表次版本号,第三组数字代表内部版本号。通过从winver
运行提示符运行小程序可以轻松显示这三个数字。但后面的这些胡言乱语是什么意思呢?
fbl_release
、、、fbl_awesome
和winmain_prs
是什么意思th1
?
第二组带破折号的数字看起来像日期。这些是编译时间日期吗?
我目前正在运行 Windows 10,这是我通过 Windows 更新获得的正式发布版本,作为免费升级的一部分。我从 Windows 8.1 升级到 Windows 10。原因是我想将我的版本与列表中的最后一个版本进行比较。
通过在 cmd 中运行systeminfo
命令,我得到了以下读数:
OS Name: Microsoft Windows 10 Pro
OS Version: 10.0.10240 N/A Build 10240
OS Manufacturer: Microsoft Corporation
OS Configuration: Standalone Workstation
OS Build Type: Multiprocessor Free
为什么它说我有“N/A”?没有任何附加条件?!
答案1
什么是 Windows 构建字符串?
它是一组唯一标识 Windows 版本的字符。
什么是构建?...
构建是指构建解决方案。即:将源代码编译成目标代码,并将目标代码链接到可执行机器代码。它是分析、设计和编程工作的最终产品。但是,它可能不是最终产品,因为在完成之前可能会经过多次修改。当它完成时,它被称为最终版本、黄金版本,或者在 Microsoft 软件中称为 RTM(发布到制造)。
归根结底,构建是可以用软件解决的问题的解决方案!因此,最好将其简称为软件。在这种情况下,它是 Windows 系统软件 — 很可能现在就在您的计算机上运行并使其有用的操作系统。如今的孩子都称其为“应用程序”,最初是“应用程序”或“应用软件”的缩写,但现在也有了其他含义。小组简单地将其称为“程序”。借用瑞典谚语,“心爱的孩子有很多名字。”
这也是微软年度开发者大会的名称。
如何在 Windows 中读取构建字符串?
构建字符串在 Windows 注册表中以字符串值的形式进行内部存储。有两种构建字符串需要注意。一种仅称为构建字符串,仅包含构建编号,因此它只是数字。另一种有时称为完整构建字符串,因为它还包括分支名称和编译时间,或者更确切地说是构建时间戳。
Windows 注册表中的以下项包含正在运行的系统的完整构建字符串。
HKLM\Software\Microsoft\Windows NT\CurrentVersion
这里有两个感兴趣的变量:
BuildLab: 10240.th1.150729-1800
BuildLabEx: 10240.16412.amd64fre.th1.150729-1800
构建字符串的含义是什么?
一般来说,构建字符串包含以下部分:主版本、次要版本、构建编号、分支名称、构建日期、构建时间。
总体来说,该方案看起来是这样的:
[major].[minor].[build].[branch].[date]-[time]
现在我将研究几个例子。
- 6.4.9879.fbl_发布.141103-1722
这里,主版本号为 6,次版本号为 4,构建号为 9879。分支名称为fbl_release
。它构建于 2014 年 11 月 3 日,当地时间 17:22。
- 10.0.10014.winmain_prs.150205-1859
此处的主版本号为 10,次版本号为 0,内部版本号为 10014。这是首批获得主版本号 10 的 Windows 版本之一。微软仅在一个版本之前(内部版本 10009)将主版本号从 6 改为 10。这就是 Windows 10 得名的原因。分支名称为,winmain_prs
这被认为是主分支。它于 2015 年 2 月 5 日当地时间 18:59 构建。
- 10.0.10240.16384.th1.150709-1700
这里我们有主版本 10、次版本 0 和内部版本号 10240。我不太清楚 16384 代表什么。当 Windows 8.1、Windows 8、Windows 7 以及 Windows Vista 是 RTM 版本或接近 RTM 版本时,此数字会出现在它们的内部版本字符串中。我称其为“神奇数字”。但我猜它是某种“微版本”或内部版本颠覆。这个版本是在 2015 年 7 月 9 日构建的,比 Windows 10 正式发布早 20 天。它于 7 月 15 日被推送给 Windows Insider 测试人员,并于 7 月 29 日开始向那些预订了 Windows 10 免费升级副本的人推出。
- 建造实验室:10240.th1.150729-1800
- BuildLabEx:10240.16412.amd64fre.th1.150729-1800
这是我目前用来输入答案的版本。这也是一个 RTM 版本,因为它是版本 10240。但从版本日期可以看出,这个版本实际上比 7 月 15 日向测试人员推出的上一个版本更甚。看看日期!上面写着 2015 年 7 月 29 日。这是 Windows 10 的发布日期!看看这个神奇的数字!它是 16412!将其与 16384 进行比较。因此,我知道这是一个较新的版本。
BuildLabEx 值包含的信息比之前的示例略多。它包括魔法数字或构建版本,以及处理器架构的名称。因此,在本例中,它是 AMD64,又名 EM64T 或 Intel 64,即:64 位处理器。“fre”可能代表“免费”,即:生产内核,而不是“经过检查的”开发内核。
因此,扩展后的方案如下所示:
[major].[minor].[build].[subversion].[architecture].[branch].[date]-[time]
但是分支名称的含义是什么?...
- 主程序
- fbl_令人印象深刻
- fbl_awesome
- fbl_释放
- th1
这winmain_prs
是“Windows 主”分支。这是主要的、稳定的、准备发布的分支,所有过去和未来的 Windows 版本都是从这个分支开发的(至少对于 Windows NT 系列而言)。“prs”可能代表合作伙伴,或生产就绪且稳定。我真的只是猜测!网上没有太多关于此的信息。
我非常确定“fbl”代表“未来构建”。这些是正在进行的工作,不稳定的分支。它们的名字很可爱,如“令人印象深刻”、“很棒”和“发布”(最后一个不太可爱)。我认为“令人印象深刻”和“很棒”用于添加新功能,而“发布”用于在反向集成到主分支之前进行调试和稳定。
“th1”分支是新的。我不确定这意味着什么。但我知道只有 RTM 版本挂在此分支上。因此,这可能是 Windows 发布模式发生变化的某种迹象。我指的是向 Windows 即服务的转变。
更新:Build 10525 已于发布在“th2”分支上。“th”显然是“threshold”的缩写,这是 Windows 10 的代号。“th1”似乎是公开发行版,而“th2”是内部预览版分支。
构建字符串为什么有用?
它们可以精确识别 Windows 版本,直至分支和编译时间。这使得跟踪小的更改变得非常容易,因为对代码的每次更改(无论多小)都会被编译、链接、构建和发布,还会获得一个新的构建字符串来标识它。构建字符串对 Beta 测试人员最有用。因为在开发周期的测试阶段会对代码进行小而频繁的更改。
一旦最终发布,完整的版本字符串就变得没什么意思了。相反,主要内容是主要、次要和内部版本号。这有助于识别正在运行的 Windows 系统的“版本”。第三方 Windows 应用程序使用此来识别它们正在安装或运行的 Windows 版本。这与 Windows 营销名称(例如“Windows XP”或“Windows Vista”)不同。
答案2
的含义
fbl_释放
和类似的显示从哪个分支发布了该版本。例如,如果您是开发应用程序的 Microsoft 合作伙伴 (ISV),您将从您在帖子中显示的 Impressive 分支获取版本。其他分支用于 OEM 合作伙伴,而 winmain 通常是主分支,所有内容在发布 RTM 之前的某个时间点都会合并到该分支中。
有关分支的详细信息,请参阅微软
其他一些名称是未来发布的版本,由于我有保密协议,所以我不能分享详细信息。
您将不会在 RTM 产品中看到分支详细信息 - 它仅用于开发目的。如果您想继续获取测试版,信息就在那里
答案3
Get-ComputerInfo -Property 'WindowsBuildLabEx'
输出示例
18362.1.amd64fre.19h1_release.190318-1202
该Get-ComputerInfo
cmdlet 是在 Windows PowerShell 5.1 中引入的。
答案4
为了避免奔跑注册表编辑器您可以从终端查询:
PS C:\Users\Louis> reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v BuildLabEx
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
BuildLabEx REG_SZ 21343.1000.amd64fre.rs_prerelease.210320-1757