題 什麼是Windows構建字符串以及如何定位它?


早期版本的Microsoft Windows操作系統附加了一個已知的“構建字符串”,用於識別目的。專注於Beta軟件測試的網站通常會對這些構建字符串進行完整列表(或多或少)。

以下是這些構建字符串對於Windows 10來說可能是什麼樣子的幾個示例,按照它們發布給Beta測試人員的順序。

  • 6.4.9879.fbl_release.141​​103-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 來自Run提示符的applet。但接下來的gobbledygook是什麼意思?

的意義是什麼 fbl_releasefbl_awesomewinmain_prs,和 th1

帶有短劃線的第二組數字看起來像日期。那些編譯時間日期?

我目前正在運行Windows 10,這是我通過Windows Update獲得的官方發行版,作為免費升級產品的一部分。我從Windows 8.1升級到Windows 10。原因是我想將我的名單與該名單中的最後一名進行比較。

通過運行 systeminfo 在cmd中的命令,我得到這個讀數:

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”? 沒有任何附加條件?!


2
2017-08-11 19:28


起源


通過將“OS Version”字段與其他Windows版本進行比較,看起來“N / A”事物是Service Pack字符串的佔位符。由於Windows 10沒有這樣的東西,並且由於微軟的Windows新版本模型可能不會出現這種情況,因此在未來幾年內只會讀取“N / A”或“不可用”。當“10.0.10240”說明一切時(好吧,差不多全部,或者我不會發布這個問題),這有點浪費字符。 - Samir


答案:


的含義

fbl_release

和類似的節目從哪個分支發布。例如,如果您是開發應用程序(ISV)的Microsoft合作夥伴,那麼您將從帖子中顯示的Impressive分支獲得構建。其他分支機構用於OEM合作夥伴,winmain通常是主要分支,其中每個標誌在運送RTM之前的某個時刻合併。

有關分支的更多詳細信息,請參閱 MSDN

其他一些名稱是未來的版本,因為我有NDA,我無法分享細節。

您不會在產品中看到RTM中的分支,詳細信息 - 它僅用於開發目的。如果您繼續獲得測試版,那麼信息就在那裡


3
2017-08-11 20:05



那麼從哪個分支構建RTM呢?來自“winmain”? “fbl”代表什麼?我只能假設“prs”代表合作夥伴。什麼是“th”?你能否確認下面的6位數字是編譯日期?最後4位數是多少?一天中的時間可能??如果是這樣的話,看起來微軟經常加班,有時甚至到深夜! ;-)每晚建立!哈哈!只是為了把這件事告訴我們。 - Samir
如果我在這裡要求太多,我很抱歉。請不要透露你不應該透露的東西。我真的不希望你被捕! ;-)或者失去你的合同。 - Samir
Windows註冊表中有一個名為BuildLab的鍵,另一個名為BuildLabEx。這是我認為的嗎?或者它是否存儲為非字符串值?這裡的第一個是 10240.th1.150729-1800。我想這回答了日期和時間的問題。它說150729,即2015年7月29日Windows 10即將發布。這裡的第二個是 10240.16412.amd64fre.th1.150729-1800。當然,AMD64是架構。什麼是“自由”?法國人嗎?我的是英語。 - Samir
什麼是16412?微構建?顛覆?這個自動收報機很有趣。主要是因為它高於16384我的PC有一些主要的電源管理問題。所以它似乎有點進化,事實上我沒有16412的問題,現在正在最終發布。 - Samir


什麼是Windows構建字符串?

它是一組唯一標識Windows構建的字符。

什麼是構建?...

構建是指構建解決方案。即:將源代碼編譯為目標代碼並將目標代碼鏈接到可執行的機器代碼中。它是分析,設計和編程工作的最終產品。但是,它可能不是最終產品,因為在此之前可能會多次修改。當它發生時,它被稱為最終版本,黃金版本,或者在Microsoft軟件的情況下:RTM(發佈到製造)。

最終,構建是可以在軟件中解決的問題的解決方案!因此,它簡單地稱為軟件。在這種情況下,它是Windows系統軟件 - 很可能現在在您的計算機上運行並使其有用的操作系統。今天的孩子們稱之為“應用程序”,最初是“應用程序”或“應用程序軟件”的簡稱,但它現在也具有其他含義。 Grups簡稱為“程序”。為了重用瑞典諺語,“一個心愛的孩子有很多名字。”

 它也是微軟年度開發者大會的名稱。

如何在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_release.141​​103-1722

這裡,主要版本是6,次要版本是4,內部版本號是9879.分支的名稱是 fbl_release。它建於2014年11月3日當地時間17:22。

  • 10.0.10014.winmain_prs.150205-1859

這裡的主要版本是10,次要版本是0,內部版本號是10014.這是第一個獲得主要版本號10的Windows版本之一。微軟將主要版本號從6個翻轉到10只提前一個版本(構建10009) 。這就是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免費升級副本的人推出。

  • BuildLab:10240.th1.150729-1800
  • BuildLabEx:10240.16412.amd64fre.th1.150729-1800

這是我目前用來輸入這個答案的那個。這也是一個RTM構建,因為它是構建10240.但是從構建日期可以看出,這個實際上比7月15日推出給測試人員的前一個更為明顯。看看約會吧!它說2015年7月29日。那是Windows 10的發布日期!看看神奇的數字!這是16412!與16384相比。所以我知道這是後來的版本。

BuildLabEx值包含的信息比之前的示例略多。它包括幻數或構建subversion,以及處理器體系結構的名稱。所以在這種情況下,它是AMD64,a.k.a。EM64T或Intel 64,即:64位處理器。 “fre”可能代表“free”,即:生成內核,而不是“checked”開發內核。

所以擴展的方案看起來像這樣:

[major].[minor].[build].[subversion].[architecture].[branch].[date]-[time]

但分支名稱的含義是什麼?...

  • winmain_prs
  • fbl_impressive
  • fbl_awesome
  • fbl_release
  • TH1

winmain_prs 是“Windows主要”分支。這是所有過去和未來Windows版本的主要,穩定和準備發布分支(至少在Windows NT系列的情況下)。 “prs”可能代表合作夥伴,或生產準備和穩定。我真的只是在猜測!網上沒有太多關於此的信息。

我很確定“fbl”代表“未來構建”。這些正在進行中,不穩定的分支機構。他們在可愛的名字下,如“令人印象深刻”,“很棒”和“釋放”(最後一個不那麼可愛)。我認為“令人印象深刻”和“很棒”用於添加新功能,而“release”用於調試和穩定,然後反向集成到主分支。

“th1”分支是新的。我不確定這意味著什麼。但我知道它只是掛在這個分支上的RTM構建。因此,它可能是Windows發布模型更改的某種指示。我指的是轉向Windows即服務。

更新:Build 10525最近已經發布 發布 在“th2”分支。 “th”顯然是“閾值”的縮寫,它是Windows 10的代號。“th1”似乎是一般公開發布,而“th2”是內部預覽版本分支。

為什麼構建字符串有用?

它們允許精確識別Windows構建,直到分支和編譯時。這使得跟踪小變化變得非常容易,因為對代碼的每次更改(無論多麼小)都可以獲得編譯,鏈接,構建和發布的新構建字符串來識別它。構建字符串對Beta測試人員非常有用。因為在開發週期的測試階段期間對代碼進行了小而頻繁的更改。

一旦完成最終發布,完整的構建字符串變得沒什麼興趣。相反,感興趣的主要是主要,次要和內部編號。這有助於識別正在運行的Windows系統的“版本”。這是第三方Windows應用程序用於標識正在安裝或運行的Windows版本的內容。這與Windows營銷名稱不同,例如“Windows XP”或“Windows Vista”。


1
2017-08-12 12:19



我希望有人覺得這很有用。我花了很長時間來編譯它。所以我希望這對某人有價值。我知道它涉及軟件開發和版本控制,但它實際上只是運行Beta版本的Windows並找出你的構建字符串。如果他從不運行Beta測試,那麼“超級用戶”是什麼?如果某個Beta版本中發現了一些錯誤,請發表評論。請賜教“prs”和“th1”的含義。 - Samir
我剛剛發現了一個新的“th2”分支。新發布的預覽版本10525是該分支的一部分。 “th”是“閾值”的縮寫,我們都知道它是用於Windows 10的代碼名稱。所以我們去,一個縮寫揭秘,還有一個去。 - Samir