Windows 10 にて Windows Update に失敗し、なおかつ更新プログラムの適用状態が「保留中」のままになってしまった場合の解決方法を紹介したページです。
いわゆる「再起動ループ」の状態を解消する方法の一つです。
- 更新プログラムをインストールする際の「PC再起動中」にこの問題が発生すると、Windows が起動するたびに「保留中の更新プログラム」の適用を試みるようになり、その度に Windows の起動に失敗、スタートアップ修復を繰り返す状態に陥ってしまいます。
このページでは、このような状態になった場合の「保留中の更新プログラムを削除する手順」を紹介しています。
実際の手順1 (前準備の段階)
再起動ループ発生などの「かなり重症なケース」を想定し、スタートアップ修復に失敗した所から解説をはじめています。
起動できない状態からコマンドプロンプトを起動する
Windowsが起動に失敗した状態
▲クリックで拡大
「詳細オプション」を選択します。
※ Windows回復環境を起動が起動しない場合は、システム修復ディスクやインストールメディアを利用してもOKです。
「オプションの選択」画面
▲クリックで拡大
「トラブルシューティング」を選びます。
トラブルシューティング
▲クリックで拡大
この画面で「詳細オプション」を選びます。
詳細オプション
▲クリックで拡大
「コマンドプロンプト」を選びます。
※ ここでPCが再起動されます。
※ ログインするアカウントのパスワード入力が必要です。
コマンドプロンプトの起動手順は以上です。
続いて、Windowsシステムが保存されたドライブがどこにあるかを確認します。
Windows のシステムドライブを確認する
回復環境で起動した場合、Windowsシステムが「Cドライブ以外」になっている事があります。以下手順でWindows のシステムドライブの場所を確認します。
※この作業はメモ帳を使うと便利です。
コマンドプロンプト上で「notepad」と入力します。
コマンド実行例
▲クリックで拡大
メモ帳が開いたら「名前を付けて保存」>「PC」を選ぶ。- 上図の場合、
Cドライブがは500MBの回復領域、
Dドライブが Windows のシステム領域であると分かります。 - この後の手順も、メモ帳を使うと手間が省けて便利です。
- メモ帳、コマンドプロンプト共にコピー&ペーストが可能
- サイト内関連
Windows 回復環境のコマンドプロンプトでコピー&ペーストを使う
別PCを用意できる場合、このページ内のコマンドを「テキスト形式で USBメモリに保存」してから復旧を行うと、かなり楽に手順を進めることができます。
以上が準備段階です。
実際の手順2 (保留状態の確認)
ここからが実際の手順です。
以下すべて、コマンドプロンプトで操作を行います。
注意: 以下すべて「Windowsシステム が Cドライブの場合」のコマンドを掲載しています。必要に応じて「C:\」の部分を書き換えて利用してください。
保留状態となったレジストリの値を修正する
この項目は、「保留中の更新プログラム」がレジストリ値に「実行すべき」とマークされた状態を解除するための操作です。
(実際に保留中の更新プログラムを削除する操作は次項)
1. レジストリをロードする
2. 以下でレジストリキー「SessionsPending」を削除する
- コマンド
reg delete “HKLM\temp\Microsoft\Windows\CurrentVersion\Component Based Servicing\SessionsPending” /v Exclusive
※レジストリ値が存在しない場合は、そのまま次の手順に進んでOK。 - コマンド実行例
▲クリックで拡大
「レジストリ値 Exclusive を削除しますか?」と聞かれるので「y」を入力
3. レジストリをアンロードする
保留中になっている更新プログラムを特定する
まず更新プログラムのリストを確認する
- コマンド
Dism /Image:C:\ /Get-Packages >>C:\result.txt
※赤文字部分を付け足すとテキスト形式で出力できる。
※保存場所やファイル名は任意でOK。 - コマンド実行&メモ帳で確認
▲クリックで拡大
ここまでの手順で、Windowsが起動できなくなっている原因となった更新プログラムの特定は終了です。続いて、この更新プログラムを削除します。
保留中の更新プログラムを削除する
- コマンド
dism /image:C:\ /remove-package /ScratchDir:C:\ /PackageName:Package_for_RollupFix~31bf3856ad364e35~amd64~~16299.248.1.17※ 上記はWindows システムが Cドライブだった場合。
※ 赤文字部分は前述のコマンドで 調べたパッケージIDを使う - コマンド実行例
▲クリックで拡大
DISM コマンドが正常に終了すると、上図のような表示になります。
ここまでの手順を行なえば、とりあえず Windows は正常起動できるようになっているはずです。
※ Windows Update の失敗が「繰り返される」原因を取り除いただけ。
※「失敗の原因」そのものは解決できていない場合がある。
復旧手順はここまで
(注意: 次項を読んでから実行してください)
上記の手順をすべて終了した後は、コマンド プロンプトを「X」で閉じ、Windows 回復環境 の画面に戻ります。
▲クリックで拡大
ここで [続行] をクリックして回復環境を終了させ、Windows を起動してみます。
注意: Windows の起動に時間がかかるケースがある
Windows を起動する前に、できれば最後にもう一手間かけておきます。
手元で何度かこの削除手順を試したところ、PCの再起動に異様に時間がかかったり (手元のテストでは最大40分くらい)、PC再起動後の Windows Modules Installer Worker などメンテナンス系サービスの挙動が通常よりかなり激しくなる (極端にPCが重くなる) ケースが発生しました。
この「時間がかかる/PCが重くなる問題」は、「DISM /cleanup-image /startcomponentcleanup」もしくは「自動メンテナンス」で解決できるようです。
コンポーネントのクリーンアップを行う
以下の手順を実行します。
- コマンド (Windows 回復環境の場合)
- DISM /image:C:\ /ScratchDir:C:\ /cleanup-image /startcomponentcleanup
- コマンド (Windows が起動した後で Windows 上で実行する場合)
- DISM /online /cleanup-image /startcomponentcleanup
※ 自動メンテナンスの際に自動で実行されます。
- DISM /online /cleanup-image /startcomponentcleanup
- コマンド実行例
▲クリックで拡大
問題が発生した環境で (イメージから復元してもう一度更新プログラムを削除しなおして) この startcomponentcleanup コマンドを試してみると、上記「PC再起動と再起動後の問題」が軽減できることが確認できました。
ただし、このコマンドもメチャメチャ時間がかかる (40分かかった) ので、やってもやらなくても同じかもしれません。
このページの手順紹介はここまで
無事 Windows が起動でき、「PCが重い」状態が終了した後は、サイト内「Windows updateができない・失敗をくりかえす時の一般的な対処方法」などの手順で Windows Updateが失敗した原因を取り除き、問題となっている 更新プログラムの適用を試してみます。
このページの解説は以上です。