Windows 11の「Windows回復環境(WinRE)」が累積更新でアップデートされるように変わった!山市良のうぃんどうず日記(268)

これまで「Windows回復環境(WinRE)」は、Windowsの新しいバージョンのインストールまたはアップグレード時にセットアップされ、その後は通常、次のバージョンまでアップデートされることはありませんでした。Windows 11 バージョン22H2では、それが毎月の品質更新プログラムでアップデートされるように変更されたそうです。この変更は、Windows 11 バージョン22H2以降だけでなく、Windows 11 バージョン21H2に対しても行われているようです。

» 2023年10月25日 05時00分 公開
[山市良テクニカルライター]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「山市良のうぃんどうず日記」のインデックス

山市良のうぃんどうず日記

2023年春のWinRE脆弱性対策は、回復パーティションの容量不足が課題だった

 本連載第254回では、アップグレードの繰り返しで増えてしまった「回復パーティション」の残骸をきれいに整理する方法を紹介しました。

 その際、当時、問題となっていた「Windows回復環境(WinRE)」の「BitLockerセキュリティ機能のバイパスの脆弱(ぜいじゃく)性」にも対策しました。この脆弱性対策は、WinREのイメージ(回復パーティション\Recovery\WindowsRE\winre.wim)にオフラインパッチするという少し厄介な手順が必要でした。Microsoftは必要な作業を支援するスクリプトを提供しましたが、ほとんどの場合、回復パーティションの容量不足でスクリプトが失敗してしまうことも指摘しました。Windowsのインストーラーが自動作成する回復パーティションのサイズでは、容量不足で失敗してしまうのです。

 このWinREの脆弱性問題もあってなのでしょうか、Microsoftは2023年6月末リリースの「オプションの更新プログラム(Cリリース)」から、Windows Updateまたは「Windows Server Update Services(WSUS)」経由で更新プログラムを受け取るデバイスについて、毎月の累積的な更新プログラム(Bリリース、Cリリース)を使用して、WinREをアップデートするように変更したことを、以下の技術ドキュメントで明らかにしました。ドキュメントは「Windows 11」のバージョン22H2を対象としていますが、バージョン21H2にも適用される可能性があります。

 WinREの脆弱性に対策済みであった筆者のメインPCで、回復パーティションにドライブ文字を割り当て、WinREイメージのタイムスタンプを確認したところ、直近の累積更新プログラムをインストールするタイミングでWinREのイメージがアップデートされていることを確認できました(画面1)。

画面1 画面1 Windows 11 バージョン22H2以降では、回復パーティションに十分な容量がある場合、毎月の累積更新プログラムによってWinREが更新される

 具体的には、コマンドプロンプトを管理者として開き、「DISKPART」コマンドを次のように実行して回復パーティションにドライブ文字Rを割り当てます。

DISKPART
DISKPART> LIST DISK
DISKPART> SELECT DISK 0	(OSディスクが「0」の場合)
DISKPART> LIST PARITION
DISKPART> SELECT PARTITION 4	(回復パーティションが「4」の場合)
DISKPART> ASSIGN LETTER=R

 別のコマンドプロンプトを開いて、以下のコマンドラインを実行し、「Winre.wim」のタイムスタンプを確認します。

DIR R:\Recovery\WindowsRE /a

DISKPARTコマンドのプロンプトに戻り、回復パーティションに割り当てたドライブ文字を削除して、終了します。

DISKPART> REMOVE LETTER=R
DISKPART> EXIT

 累積更新プログラムによって、WinREがアップデートされるかどうかは、回復パーティションの空き容量に左右されるようです。以前に対策済みの筆者のメインPCは、回復パーティションに1GB近く割り当てています。一方、Windowsのインストーラーによって自動作成された600MB程度の回復パーティションの場合は、WinREがアップデートされることはありませんでした(画面2)。

画面2 画面2 Windowsインストーラーによって自動生成された回復パーティションの場合、WinREがアップデートされることはなかった

 「KB5028997」の技術ドキュメントでは、更新できない場合、「Windows Recovery Environment servicing failed.」エラーメッセージを受け取ると説明されています。しかし、Windows Updateの実行中も実行後も、WinREがアップデートされなかったPCでそのようなエラーメッセージを受け取ることはなく、イベントログやWindows Updateログ(Get-WindowsUpdateLogで生成)に関連する記録も残っていません。

 累積更新プログラムは成功したとして、更新の履歴に記録されています。技術ドキュメントの説明とは異なり、WinREがアップデートできない場合は、エラーメッセージを出力するのではなく、単にサイレント失敗する(更新しない)だけのようです。

次回の累積更新プログラムに備えて、回復パーティションのサイズを広げておこう

 「KB5028997」の技術ドキュメントでは、累積的な更新プログラムによるWinREのアップデートを可能にするために、現在のWinREのイメージはそのままに、回復パーティションのサイズを100MB単位で増やす方法が示されています。

 Windows 11 バージョン22H2以降を利用しているのであれば、都合の良いタイミングで回復パーティションのサイズを拡張しておくことをお勧めします。既にインストール済みになっている、これまでの累積的な更新プログラムでのWinREのアップデート失敗が、サイズ拡張によって再試行されることはありませんが、次回以降の累積的な更新プログラムのインストールのタイミングで、WinREがアップデートされるようになるはずです。

 そのためには、コマンドプロンプトを管理者として開き、「reagentc」コマンドで現在のWinREの状態を確認し(/info)、いったん無効化(/disable)します。WinREを無効化すると、「C:\Windows\System32\Recovery」に現在のWinREイメージが退避されます。

reagentc /info
reagentc /disable

 管理者として開いたコマンドプロンプトで、DISKPARTコマンドを実行し、以下の手順でOSディスクのOS用パーティション(「\Windows」ディレクトリが存在するプライマリーパーティション)から、回復パーティション用に追加の領域を圧縮して解放します。

 次に、回復パーティションを選択し、いったんパーティションを削除してから、再作成します。再作成時、OS用パーティションの縮小で得た追加のサイズを含めて、新しいサイズでパーティションが作成されます(画面3)。

画面3 画面3 OS用パーティションを300MBだけ縮小し、そのサイズを含める形で、回復パーティションを再作成する

 その後、回復パーティション用のIDと属性をセットし、DISKPARTコマンドを終了します。筆者の経験上、現在の回復パーティションとOSパーティションからの縮小分を合わせて1GB近く(950MB以上)確保できれば十分だと思います。なお、技術ドキュメントには、MBR(マスターブートレコード)とGPTディスクのそれぞれの手順が説明されていますが、Windows 11のOSディスクはGPTディスクである必要があるため、MBRの設定については省略します。

DISKPART
DISKPART> LIST DISK
DISKPART> SELECT DISK 0	(OSディスクが「0」の場合)
DISKPART> LIST PARTITION
DISKPART> SELECT PARTITION 3	(OSパーティションが「3」の場合)
DISKPART> SHRINK DESIRED=300 MINIMUM=300	(OSパーティションを300MB縮小)
DISKPART> SELECT PARTITION 4	(回復パーティションが「4」の場合)
DISKPART> DELETE PARTITION OVERRIDE
DISKPART> CREATE PARTITION PRIMARY
DISKPART> FORMAT QUICK FS=NTFS LABEL="Windows RE tools"
DISKPART> set id=de94bba4-06d1-4d40-a16a-bfd50179d6ac
DISKPART> gpt attributes=0x8000000000000001
DISKPART> LIST PARTITION
DISKPART> EXIT

 DISKPARTコマンドによる回復パーティションの再作成を終えたら、reagentcコマンドでWinREを再び有効化(/enable)します(画面4)。

reagentc /enable
reagentc /info
画面4 画面4 回復パーティションのサイズを1GB近くまで増やしたら、reagentcコマンドでWinREを再び有効化する

 回復パーティションを拡張したとしても、既にインストール済みの更新プログラムがWinREをアップデートすることはありません。次回の累積的な更新プログラムのインストールのタイミングで、WinREがアップデートされるはずです(画面5)。なお、インストールされているWindows 11 バージョン22H2のOSビルドに更新されるわけではなく、特定のコンポーネントだけが新しいバイナリに置き換わるようです。

画面5 画面5 回復パーティション拡張後の次の累積的な更新プログラムのインストール時に、WinREイメージのアップデートが行われる(Sysinternalsの「Process Monitor」を使用して、WinREの更新を確認しているところ)

 なお、これからWindows 11をクリーンインストールする場合は、以下の記事を参考に、UEFI/GPTベースのパーティションを手動で作成し、回復パーティションにあらかじめ1GB程度のサイズを割り当てておくことをお勧めします。その場合、インストール後の回復パーティションのサイズ調整は不要になるはずです。

筆者紹介

山市 良(やまいち りょう)

岩手県花巻市在住。Microsoft MVP 2008 to 2024(Cloud and Datacenter Management)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows版Docker&Windowsコンテナーテクノロジ入門』(日経BP社)、『ITプロフェッショナル向けWindowsトラブル解決 コマンド&テクニック集』(日経BP社)。


Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。