Windowsがアップデート後に再起動を促し続けるループに陥ることがあります。何度再起動しても、システムがアップデートの完了を認識してくれないような状態です。特に仕事に戻ろうとしているときには、少しイライラします。アップデートに失敗し、再起動待ちのフラグが消えないなど、奇妙な未完了状態になっていることが原因かもしれません。延々と続く再起動のプロンプトにうんざりしているなら、このループを打破し、Windowsにアップデートプロセスが完了したことを強制的に認識させる方法があります。
まず、保留状態になっている更新パッケージがないか確認する必要があります。これは、管理者としてPowerShellから実行できます。PowerShellウィンドウで、次のコマンドを実行します。
DISM /online /get-packages /format:table | Select-String "Pending"
これにより、再起動を待機しているすべてのパッケージが出力されます。よりクリーンな出力を得るには、以下のコマンドを使用することもできます。
Get-WindowsPackage -Online | Where-Object { $_. PackageState -like '*Pending*' }
ここで更新が表示された場合、Windows は完了するには再起動が必要だと認識しています。環境によっては、再起動してもこのフラグがクリアされず、何も変わらずメッセージが表示され続けることがあります。その場合は、保留中の更新アクションを手動でキャンセルする必要があります。
Windows に保留中の更新を強制的に消去させる方法
オプション1: リカバリモードで再起動し、保留中のアクションを元に戻す
この方法は、Windows回復環境(WinRE)で再起動できる場合に有効です。再起動するには、管理者としてコマンドプロンプトを開き、次のコマンドを実行します。
shutdown /f /r /o /t 0
これにより、Windowsは強制的に回復モードへの再起動を準備します。自動的に回復モードに移行しない場合は、Windowsインストールメディアまたは回復ディスクから起動する必要があるかもしれません。回復モードに入ったら、DISMコマンドを実行して保留中の更新アクションを元に戻してみてください。WindowsパーティションがC:\の場合、次のコマンドを実行します。
DISM /image:C:\ /ScratchDir:C:\ /Cleanup-Image /RevertPendingActions
このコマンドは、保留中の更新を示すフラグを元に戻そうとします。システムがドライブ文字を認識しない場合は、C:\をマシン上のドライブ文字に置き換えてください。
オプション2: Pending.xmlファイルを手動で削除し、更新キャッシュをクリアする
それでも問題が解決しない場合は、より手動で対処する方法があります。まず、WinSxSフォルダからpending.xmlファイルを削除します。
del C:\Windows\WinSxS\pending.xml
また、cleanup.xmlが存在する場合は削除します。
del C:\Windows\WinSxS\cleanup.xml
これらのファイルには更新フラグが含まれている場合があり、削除すると更新状態がリセットされる可能性があります。ダウンロードした更新ファイルのキャッシュをクリアするには、次のコマンドを実行します。
del C:\Windows\SoftwareDistribution\Download\*.*
次に、レジストリエディターを開き、オフラインのWindowsイメージからハイブを読み込み、保留中のファイル名変更操作を削除します。手順は以下のとおりです。
- regeditを起動する
- メニューから、「ファイル」>「ハイブの読み込み」を選択します。
- 移動先
C:\Windows\System32\config\Software - それをロードしてOfflineSoftwareのような名前を付けます
- HKLM\OfflineSoftware\SYSTEM\CurrentControlSet\Control\Session Managerに移動します。
- PendingFileRenameOperationsを見つけて削除する
- ハイブをアンロードします(regeditでハイブを選択し、[ファイル] > [ハイブのアンロード]を選択します)
こういった怪しい操作を行うと、保留中のファイル操作リストがリセットされます。その後、PCを通常通り再起動し、Windowsが更新の完了を認識するかどうかを確認してください。
最終ステップ: システムファイルの検証と修復
すべて問題ないように見えても、システムの整合性に問題があると思われる場合は、次のコマンドを実行して確認し、修正します。
DISM /Online /Cleanup-Image /RestoreHealth sfc /scannow
このコンボは、破損したファイルや壊れたシステム コンポーネントをスキャンして修復します。当然ながら、Windows は必要以上に物事を複雑にする傾向があるためです。
なぜうまくいくのかは分かりませんが、一部の設定では、これらのフラグとファイルをいじることで、Windowsが再起動待ちのバグを解消してくれることがあります。少し面倒ですが、これだけで煩わしい再起動メッセージは消えるはずです。通常、1台のマシンではこれで十分ですが、他のマシンでは、いくつかの手順を繰り返したり、数回再起動したりする必要があるかもしれません。
まとめ
- PowerShell コマンドを使用して保留中の更新パッケージを確認します。
shutdown /f /r /o /t 0リカバリモードで再起動するために使用します。- 保留中のアクションを元に戻すには、DISM コマンドを実行します。
- pending.xml を手動で削除し、更新キャッシュをクリアします。
- レジストリ ハイブを編集して、残っている保留中の操作を削除します。
- 必要に応じてシステム修復コマンドを実行します。
まとめ
このアップデートループから抜け出すには、特にシステムが頑固な場合は、多少の試行錯誤が必要になることがあります。しかし、通常は保留中のファイルやコマンドをいじることで解決します。Windowsは必ずしも簡単にはいかないことを覚えておいてください。しかし、少し辛抱すれば、延々と続く再起動プロンプトから抜け出し、ようやく正常な状態に戻ることができます。これで、誰かが机に頭をぶつけずに済むことを願っています。