Windowsのインプレースアップグレードを繰り返してきたPCでは、いつの間にか何も使用されていない無駄なパーティションが増えていることがあります。その理由は、回復パーティションの既定の配置変更やWinREイメージのサイズ増加が関係しています。2022年末に明らかになったローカルのWinREの脆弱性対策を機に、乱れてしまったパーティション構成を整理しました。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
本連載第251回では、仮想マシンのゲストOSのバージョンアップグレードの結果、無駄に増えてしまった回復パーティションを削除して、容量可変タイプの仮想ハードディスク(VHDX)に適したパーティションの最後に回復パーティションを持たないパーティション構成にする方法を説明しました。仮想マシンの場合、ISOメディアから「Windows回復環境(Windows Recovery Environment、WinRE)」を簡単に起動できるので、ゲストOSのローカルにあえて回復パーティションやWinREをセットアップすることは省略しました。
容量固定の物理HDD(またはSSD)の物理環境では、アップグレードの繰り返しで回復パーティションが増えてしまったとしても、十分な空き領域が残っていれば放置してもよいと考えていました。ところが先日、「Windows 10(x64)バージョン22H2」を搭載したノートPCのパーティション構成を確認したところ、ディスクの末尾に回復パーティションが3つ並んでいるデバイスを確認しました(画面1)。サポート終了(EoS)まで後数年のWindows 10デバイスなので、これ以上増えることはないと思いますが、目にしてしまった以上、どうにかスッキリさせたいと思ってしまいました。
というのは、2022年11月に、ローカルにインストールされているWinREに「CVE-2022-41099」のセキュリティ脆弱(ぜいじゃく)性問題があることが公表され、この脆弱性に対策するためにはローカルにインストールされているWinRE(winre.wim)に対して更新プログラムをオフラインで適用するという面倒な手順を実施する必要があったからです。
2023年1月の更新プログラムで追加の手順を実施することで修正されるかのような記事を見掛けましたが、修正は2022年11月の更新プログラムに含まれます。
なお、この脆弱性を悪用するためには物理デバイスに直接アクセスできる必要があり、その可能性は低いため、緊急に対策しなければならないというものでもありません。また、そもそも「BitLockerドライブ暗号化」を利用していないデバイスでは、この脆弱性を悪用してセキュリティをバイパスされることはありません。個人や会社のデバイスで対策する必要があるかどうかについては、以下の公開情報を確認して判断してください。
Microsoftは2023年3月に、WinREの脆弱性対策のための面倒な手順を簡単に実装できるPowerShellスクリプトを公開しました。しかし、このスクリプトは回復パーティションの空き領域が不足していると失敗する上(画面2)、意図せず、ローカルのWinREが無効化されたり、削除されたりすることもあるようなのです。
筆者の環境では、「Windows 11 バージョン22H2」のWinREイメージは、元の約575MBからパッチ適用後に約775MB、Windows 10(x64)バージョン22H2は元の約471MBからパッチ適用後に802MBにサイズが増加しました。
回復パーティションには「winre.wimのサイズ」+「少なくとも100MB(推奨250MB)の空き領域」+「5〜15MB(NTFSファイルシステム自体が予約する領域)」が必要なので、パッチ済みのWinREを格納するためには約1GBのサイズが必要になります。「Windowsセットアップ」で自動作成された回復パーティションのサイズでは、多くの場合、現在の回復パーティションのままパッチを適用するには容量不足になるでしょう。
Windowsセットアップは、同じWindowsのバージョンでWinREイメージが更新されることを想定していないと思われ、オリジナルのWinREイメージのサイズに基づいて回復パーティションのサイズを調整するからです。Microsoftが対策を推奨しているからといって、影響を受けないかもしれないのに(BitLockerを使用していないデバイス)、何も考えずに安易にスクリプトを実行してしまうと、WinREが削除されるなど、思わぬトラブルに巻き込まれてしまうかもしれません。
今回紹介する回復パーティションの再作成手順は、無駄に増加してしまった回復パーティションを整理するだけでなく、回復パーティションの容量不足への対応や、意図せずWinREが無効化されてしまった場合のWinRE再セットアップにも利用できます。
回復パーティションが複数ある場合、ローカルにインストールされている現在のWinREの場所を確認するには、コマンドプロンプトやPowerShellウィンドウを管理者として開き、「reagentc /info」コマンドを実行します。現在利用されていない回復パーティションについては、念のためドライブ文字を割り当てて内容を確認してください。OEMの回復ツールや、OEMが用意したイメージを格納しているパーティションである場合もあります(画面3)。
回復パーティションにドライブ文字を割り当て、内容を確認し、ドライブ文字の割り当てを解除するには、コマンドプロンプトやPowerShellウィンドウを管理者として開き、以下のコマンドラインを実行します。
DISKPART > LIST DISK (OSディスクの番号を確認します) > SELECT DISK <OSディスクの番号> > LIST PARTITION (回復パーティションの番号を確認します) > SELECT PARTITION <回復パーティションの番号> > ASSIGN LETTER="ドライブ文字" (ここで別のコマンドプロンプトウィンドウを開いて「dir /a」コマンドでドライブの内容を確認します) > REMOVE > EXIT
回復パーティションには、WinREイメージを含む隠しディレクトリ「\Recovery\WindowsRE」が存在します。ちなみに、ドライブルートにある「bootTel.dat」ファイルは「autochk.exe」ツール関連の出力ファイルであり、無視して構いません(このファイルだけを含むパーティションは削除できます)。
現在の回復パーティションと、現在使用されていない無駄な回復パーティション(が存在する場合)を削除して、「CVE-2022-41099」の脆弱性にパッチ適用済みのWinREイメージを格納できる新しい回復パーティションを作成してみましょう。
ここからの手順はパーティション操作を含むため、自信がない人にはお勧めできません。それでもやってみたいという人は、「システムイメージの作成」ツールやサードパーティーのバックアップツールを使用して、フルバックアップ(またはベアメタル回復用バックアップ)を作成してから実施してください。また、作業には、インストールされているWindowsと同じアーキテクチャ、同じバージョンのインストールメディア(ISOイメージ)が必要です。
コマンドプロンプトまたはPowerShellウィンドウを管理者として開き、「DISKPART」コマンドで現在の回復パーティションと、現在使用されていない無駄な回復パーティション(存在する場合)を削除します。
DISKPART > SELECT DISK <OSディスクの番号> > LIST PARTITION (以下の2行は削除したいパーティションごとに繰り返す) > SELECT PARTITION <削除するパーティションの番号> > DELETE PARTITION OVERRIDE > EXIT
「ディスクの管理」管理ツールスナップインを開き、C:ドライブを拡張(複数の回復パーティションを削除した場合)、または縮小(以前の回復パーティションが小さすぎた場合)して、新しい回復パーティション用に1GB(1024MB)以上の未割り当て領域(サイズは実際のWinREイメージのサイズと必要な空き領域から考慮してください)を確保します(画面4)。
以下に示したDISKPARTの一連のコマンドラインを使用して、新しい回復パーティション用に確保した未割り当て領域を、回復パーティション用にセットアップします(画面5)。
なお、これはUEFIベースのデバイスの場合の例です。BIOSベースのデバイスの場合は、「set id」と「gpt attributes」の2行のコマンドラインを、「set id=27」の1行のコマンドラインに置き換えてください。
DISKPART > SELECT DISK <OSディスクの番号> > CREATE PARTITION PRIMARY > FORMAT QUICK FS=NTFS LABEL="WINRE" > ASSIGN LETTER="R" > set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac" > gpt attributes=0x8000000000000001 > EXIT
WindowsのインストールメディアのISOイメージをローカルにマウント(エクスプローラーでダブルクリックしてマウント、作業後に「取り出し」でマウント解除)したら、コマンドプロンプトまたはPowerShellウィンドウを管理者として開き、次のコマンドラインを順番に実行します(注:この手順ではWindowsのインストールメディアのWinRE.wimを使用していますが、最初にreagentc /disableでWinREを無効化すると、WinRE.wimがC:\Windows\System32\Recovery\WinRE.wimにコピーされて退避されるので、そのWinRE.wimを使用することもできます)。
MD D:\work\mount DISM /mount-image /imagefile:E:\Sources\Install.wim /Index:1 /MountDir:D:\work\mount /ReadOnly MD R:\Recovery\WindowsRE XCOPY /h D:\work\mount\windows\system32\recovery\winre.wim R:\Recovery\WindowsRE DISM /Unmount-Image /MountDir:D:\work\mount /Discard reagentc /setreimage /path R:\Recovery\WindowsRE /target C:\Windows bcdedit /v (インストールされているOSのidentifierを確認します) reagentc /enable /osguid {OSのエントリのidentifier} reagentc /info (WinREの状態がEnabledになったことを確認します) DISKPART > SELECT DISK <OSディスクの番号> > SELECT PARTITION <回復パーティションの番号> > REMOVE > EXIT
これで、新しい回復パーティションに、Windowsのインストールイメージに含まれるオリジナルのWinREがセットアップされます。この例では、インストールメディアがE:ドライブにマウントされており、一時的なマウントディレクトリとして「D:\work\mount」を使用しています。
「reagentc /info」コマンドでWinREの状態が「Enabled」とならない場合は、インストールメディアの「Boot\boot.sdi」を「R:\Recovery\WindowsRE」にコピーしてから、再度有効化すると「Enabled」にできることがあります。
インストールメディアに「Install.wim」が存在せず、「Install.esd」が存在する場合は、次のコマンドラインで「Install.esd」から「Install.wim」をエクスポートすることができるので、エクスポートした「Install.wim」からWinREイメージをコピーしてください。
DISM /Export-Image /SourceImageFile:E:\Sources\Install.esd /SourceIndex:1 /DestinationImageFile:D:\work\install.wim /Compress:max /CheckIntegrity
「CVE-2022-41099」の脆弱性に対応したセキュリティ更新は、Windows 10やWindows 11の「2022年11月の累積更新プログラム」に含まれています。「Microsoft Updateカタログ」から適切な更新プログラム(.msu)をダウンロードして、オフラインのWinREイメージに対してインストールすることで、パッチ適用済みのWinREイメージを準備できます。
それには、先ほどの一連のコマンドラインの4行目の「XCOPY」のコマンドラインを、以下の一連のコマンドラインに置き換えます(画面6、画面7)。ここでは、「G:\pathced10re」と「D:\work\mount」を作業用の一時ディレクトリとして使用しています。
MD G:\pathced10re CD G:\pathced10re XCOPY /h D:\work\mount\windows\system32\recovery\winre.wim .\ DISM /Mount-Image /imagefile:.\winre.wim /index:1 /mountdir:D:\work\mount DISM /Add-Package /Image:D:\work\mount /PackagePath:<更新プログラム(.msu)のパス> DISM /image:D:\work\mount /cleanup-image /StartComponentCleanup /ResetBase DISM /Unmount-Image /mountdir:D:\work\mount /Commit XCOPY /h .\winre.wim R:\Recovery\WindowsRE
岩手県花巻市在住。Microsoft MVP 2008 to 2023(Cloud and Datacenter Management)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows版Docker&Windowsコンテナーテクノロジ入門』(日経BP社)、『ITプロフェッショナル向けWindowsトラブル解決 コマンド&テクニック集』(日経BP社)。
Copyright © ITmedia, Inc. All Rights Reserved.