Windows 11, 10, etc - Вадим Стеркин
13.5K subscribers
276 photos
4 videos
8 files
1.02K links
Авторский канал. Windows, безопасность, мобильный мир:
• тайное знание
• профессиональный ликбез
• гадание по логам
• срыв покровов
• доставка пруфов

Чат: @winsiders
Блог: outsidethebox.ms
Oбратная связь: @vsterkin
Поддержать ₽: boosty.to/sterkin
Download Telegram
​​ℹ️ О версиях сборок и файлов #Windows10: 20H1 (19041) vs 20H2 (19042)

Я не раз писал в канале о том, что 20H2 доставляется на 20H1 накопительным обновлением, а новую версию включает #тумблер. Это следствие того, что у обоих версий одинаковая кодовая #база.

Да, в winver у 20H1 написано 19041, а у 20H2 - 19042. Но наряду с Win+Pause - это фактически единственное место в системе, где фигурирует 19042. Версии системных файлов - 19041. В чате этот вопрос уже обсуждался пару раз, и сейчас я покажу, как это быстро проверить ванлайнером #PowerShell:

Get-ChildItem c:\windows\system32\*.dll |
ForEach-Object {(Get-Item -Path $_.FullName).VersionInfo.Fileversion}|
Where-Object {$_ -like '*19042*'} | Measure-Object


В 20H2 не найдется ни одной библиотеки с такой версией. Но стоит вам сменить ее в команде на 19041 и... тысячи их! ✌️
▶️ Как скриптом определить уровень патча Windows

Допустим, у вас версия #Windows10 21H1, сборка 19043.985. Грубо говоря, 21H1 и 19043 не изменятся, пока вы не обновитесь до следующей версии (21H2). А 985 обозначает последнее накопительное исправление ОС (LCU).

Откройте KB5003173, и вы увидите 985 в заголовке статьи. Соответственно, значение увеличивается ежемесячно, с каждым новым CU.

С #PowerShell можно легко вытащить это значение из реестра. Оно записано в параметре UBR (Update Build Revision).

Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" |
fl DisplayVersion,ReleaseId,CurrentBuild,UBR

DisplayVersion : 21H1
ReleaseId : 2009
CurrentBuild : 19043
UBR : 985


Однако параметр DisplayVersion создан исключительно для отображения в оболочке, а ReleaseID имеет статус устаревшего. На практике достаточно знать 19043.985, ибо запросом в гугле вы попадете в ту же статью MSKB ↑

Это быстрый и грязный метод, который не поддерживается, как множество прочих параметров в реестре. Для взрослых есть API, а также PoC на PowerShell от Проничкина.

Альтернатива - получение информации об установленных пакетах. Поскольку LCU - самый свежий, можно ограничить выборку пакетов только им и отобразить релевантные свойства.

Get-WindowsPackage -Online -PackageName *RollupFix* |
Sort-Object -Descending | Select-Object -First 1 |
fl PackageName,InstallTime,PackageState,SupportInformation

PackageName : Package_for_RollupFix~31bf3856ad364e35~amd64~~19041.985.1.6
InstallTime : 5/12/2021 23:01:42
PackageState : Installed
SupportInformation : https://support.microsoft.com/help/5003173


Тут вам и сборка, и версия патча, и даже ссылка на статью KB.

P.S. В чате заметили, что номер сборки в выводе команд отличается (19043 vs 19041). Причина в том, что у версий 20H1, 20H2 и 21H1 общая кодовая #база.

Пост про версию патча, а если вам нужна сборка, ее покажет [environment]::osversion.Version.Build. #Классика блога в помощь: Определение версии операционной системы ✌️
🔁 Сегодня в рубрике "возвращаясь к напечатанному" переключатель для раннего получения обновлений Windows

10 дней назад я предположил, что им можно будет включить автоматическую доставку предварительных версий накопительных обновлений. Тем самым расширяя домашнее поле экспериментов. Однако вчера Microsoft опубликовала объяснение, которое оставляет моей теории мало шансов.

ℹ️ В анонсе сборки 23424 для канала Dev фичу описали так. Переключатель предназначен для использования в канале Beta, чтобы инсайдерам было проще перейти на пакет enablement. В Dev он не используется, но поможет что-то протестировать на стороне сервиса Windows Update.

Upd. Впоследствии, когда переключатель доставили в стабильные версии, стало понятно, что мое первоначальное предположение было верным. Его включение действительно активирует автоматическую установку предварительных версий накопительных обновлений. Но кроме того появляется возможность получать обновления конфигурации, которые доставляют в рамках CFR, см. KB5026644. Так или иначе, официальное объяснение в блоге инсайдерской программы было косноязычным или сознательно завуалированным.

Это описание лишь слегка приоткрывает завесу, порождая новые вопросы.

1. Будет ли фича использоваться только в канале Beta? Или также в канале Release Preview? А как насчет стабильных сборок?

2. При чем тут вообще пакет enablement? Это, кстати, вполне официальная русская терминология 🙄 Я в канале использую #тумблер.

Напомню, что Майкрософт применяет это небольшое обновление, чтобы легким движением руки осуществить обновление компонентов, т.е. переход с одной версии на другую. Но лишь при условии, что все необходимые компоненты уже были доставлены ранее накопительными обновлениями. В противном случае потребуется скачать большое обновление компонентов, что выливается фактически в установку поверх.

⌛️ Однако до сих пор тумблеры применялись только, если у текущей и следующей версий ОС была одинаковая кодовая #база. Так было в Windows 10:
• 1903 → 1909
• 20H1 → 20H2 → 21H1 → 21H2 → 22H1 → 22H2

Общая кодовая база означает, что при обновлении до новой версии ОС у системных файлов версии остаются прежними. А у Windows 11 обновление 21H2 → 22H2 сопровождалось сменой номера сборки с 22000 на 22621.

На сегодня в канале Beta две сборки: 22621 без новых фич и 22624 с новыми фичами. Переход с одной на другую как раз и должен осуществляться с помощью этого тумблера. Но что будет этой осенью в Windows 11 23H2? 🤔

Использование тумблеров в Windows 10 по большому счету объяснялось отсутствием заметных фич ввиду приоритета Windows 11 - следующей ОС 👈 Сейчас фичи доставляют постепенно - те же "моменты". Второй вышел месяц назад, до осени будет еще как минимум один.

Допустим, 23H2 включат тумблером - получится 22624. И тогда следующим "большим" обновлением станет уже... Windows vNext ✌️