0xC0000225が出た時のメモ
概要
Windows10起動時に、0xC0000001(とCRITICAL_SERVICE_FAILED)が表示され、OSが起動しなくなった。その時に行ったことや、最終的な対処、考えられる原因などをメモしておく。
0xC00000225の発生した原因
画面には以下のように表示されていた。
回復
PCは正しく起動できませんでした
要求されたデバイスが接続されてないか、デバイスにアクセスできません。
エラーコード:0xc0000225
回復ツールを使用する必要があります。インストール メディア(ディスクやUSBデバイスなど)がない場合は、PC管理者またはPC/デバイスの製造元にお問い合わせください。
これだけ見ると、原因はよくわからない。
調べてみると、以下のような場合に発生するとわかる。
- システムファイル破損/不足
- ディスク構造破損などによりBCDファイルが認識できない
- ハードウェア/ソフトウェアの変更
ざっくり、「ドライバー、OS関連、またはサードパーティ」らしい。
(以下はAzure VMだが、参考)
0xC00000225発生前に行ったこと
エラー発生時のシャットダウン前に、以下のことを行っていた。
- Windows Updateの失敗
- 不要なアプリケーションのアンインストールと機器の取り外し
これだけ見ると、「Windwos Update」がなんかしたのだろうと思うのだが、実際はそんな単純ではなかった。
Windows Updateの失敗
前々から、Windows Updateを行っては、必ず48%でフリーズする、という問題が発生していた。このときのログでは、以下が発生していた。
Windows 10、バージョン 20H2 の機能更新プログラム (3)
2021/03/17 で実行した前回のインストールが失敗しました - 0xc1900101
0xC1900101 が何かというと、「ドライバーのエラー」だ。
似たような状況の人がいないか検索したところ、以下がヒット。
上記リンクに記載の通り、おかしなドライバがないかデバイスマネージャーで確認。
ただ、今回エラーが発生したPCはメーカーから購入したPCで、デバイスマネージャーで「!」が表示されているデバイス(ドライバがインストールされていないデバイス)がないか確認しても、該当するものは見当たらなかった。
(ただ、後述するが、おそらく原因はあった。)
0xC1900101を発生させていたドライバは不明だが、結果として「Windows Updateが完了しない」という状況であった。
(おかげで、購入時の1909から21H2にずっと上げられずにいた。)
Windows Updateが失敗するのは長いこと発生していて、その度にWindwos Updateのインストールを最大限延長しては、「更新して再起動」を行わないようにしていた。
たまに更新して再起動をしてしまっても、強制終了してから電源を入れれば立ち上がるので、特段困ることがあったわけではなかった。
そんな折、「そろそろWindows11も出るし、Windows Updateができるように原因を本格的に調査するか」と思い越しを上げたわけだが、これが今回のエラーを発生させた(と思われる)。
不要なアプリケーションのアンインストールと機器の取り外し
Windows Updateの失敗(0xC1900101)について調査してみると、以下を確認と記載があった。
-
デバイスに十分な空き領域があることを確認します。
-
Windows Update を何度か実行します。
-
サード パーティ ドライバーをチェックし、更新プログラムがあればダウンロードします。
-
追加されているハードウェアを取り外します。
-
デバイスマネージャーでエラーを確認します。
-
サード パーティのセキュリティ ソフトウェアを削除します。
-
ハード ドライブのエラーを修復します。
-
Windows のクリーン ブートを実行します。
-
システムファイルを復元して修復します。
1.については空き容量が50GB以上あったのを確認していたので、問題ない。
2.も同様に何度実施しても失敗していたので、単体の問題ではない。
3.は少し怪しいが、ユニバーサル シリアル バス コントローラーのものはすべて最新だったので、おそらく無関係。
5.はエラーが発生していなかったので、おそらく無関係。
4.と6.を実施していなかったので、今回実施してみた。
セキュリティソフトウェアに該当しそうなものと、その他使用していないプログラムもついでにアンインストールし、ついでに以下以外を外して再起動した。そしてついに0xC00000225が発生した、というわけだ。
- マウス
- キーボード
- LANケーブル
- DPケーブル
- 電源ケーブル
0xC00000225発生後に行ったこと
上記エラーで調べると、色々対処法が出てきた。
先に準備したものを記載しておく。
- 同じ要領のUSB接続できるSSD
- 動作するPC
- Windows10 インストールメディア
スタートアップ修復
インストールメディアから、Windowsセットアップを呼び出す。「コンピューターを修復する」を選択し、「スタートアップ修復」を実施。
結果は以下の通り。
スタートアップ修復
スタートアップ修復でPCを修復できませんでした。
[詳細オプション]を押してその他のオプションでPCの修復を試すか、[シャットダウン]を押してPCの電源を切ってください。
ログファイル:C:¥Windows\System32\Log Files\Srt\Srtrail.txt
残念ながら修復できず。
ディスクの異常チェック
SSDに問題があると思われるので、SSD自体に問題がないかの確認。
インストールメディアから、Windowsセットアップを呼び出す。「コマンド プロンプト」を選択し、以下コマンドの実施。
chkdsk c:/r
1TBあるため多少時間はかかったが、確認した結果問題なかった。
ディスク自体が壊れたわけではないことはわかるが、それ以上は不明。
Windowss でファイル システムが修正されました。
これ以上の操作は必要ありません。
ディスク・システムファイルのチェック
ディスクの異常チェック同様にコマンドプロンプトを起動し、以下のコマンドを実行。
結果としては、検証は完了したが操作は実行できなかった。
sfc /scannow
Windows リソース保護は要求された操作を実行できませんでした。
「sfc /scannow」コマンドは保護されているすべてのシステムファイルがスキャンされ、破損したファイルがWindows既定のものに置き換え修復するコマンド。
実施できないことから、修復ファイルなども含め破損しているか、レジストリかなにかが壊れているのかと思われる。
ブート領域の修復(その1)
ディスクの異常チェック同様にコマンドプロンプトを起動し、以下のコマンドを実行。
- bootrec.exe / fixmbr
- bootrec.exe / fixboot
- bootrec.exe / rebuildbcd
1.:操作は正常に終了した。
2.:「アクセスが拒否されました」と表示され実施できなかった。
3.:実施したが結果に表示される「Windowsのインストールとして認識された合計数」が0となっていた。
「アクセスが拒否されました」と表示された場合
コマンドプロンプトから、以下のコマンドを実行。
bootsect /nt60 sys
残念ながら、これも正常終了したと思われるが正常に完了しなかった。これも同様のケースを発見したが、うまくいかず。
ブート領域の修復(その2)
diskpartコマンドを使って、ブート領域の修復も試してみた。ディスクの異常チェック同様にコマンドプロンプトを起動し、以下のコマンドを実行。
-
diskpart
-
list volume
-
select volume ?
-
assign letter=Z:
-
exit
-
format Z: /FS:FAT32
1.でdiskpartの起動。
2.でボリュームリストを表示し、対象となるパーティションを確認(FAT32の100MB程度のもの)
3.で対象のボリュームを選択。ここで正しく選択できていれば、再度「list volume」を実行すると「*」が表示される。
4.で選択済みのボリュームにドライブ文字を与える。
5.でdiskpartを終了
6.でZドライブ(対象のボリューム)をFAT32でフォーマット。
7.でブート領域の修復。
この後に再度ブート領域の修復(その1)の通りの手順を実施したが、やはり結果は変わらず。
BCDファイルの修復
BCDファイルをrebuildする、という方法も見かけたため、実施してみたが、結果は変わらず。
- diskpart
- list volume
- select volume X (ドライブ番号)
- assign letter=b: (ドライブレター例)
- diskpart> exit
- cd /d b:\EFI\Microsoft\Boot
- ren BCD BCD.bak
- bootrec /Rebuildbcd
- bootrec /fixboot
- bcdboot c:\Windows /l ja-JP /s b: /f ALL
以下のサイトの手順を参考にした。
ドライバー署名の強制を無効にする
ドライバー署名の強制がエラーを発生させている、との場合も見つかったので、スタートアップ設定からオプション 7) を選択し、ドライバー署名の強制を無効化。
この方法も効果はなし。(ただしエラーコードは異なった)
Windowsの元のイメージから修復
オンラインの修復
Windowsの元のイメージをオンラインから取得し、破損があれば修復する、というコマンドがあったためコマンドプロンプトからこちらも実行してみた。コマンドは以下の通り。
DISM /Online /cleanup-image /restorehealth
DISM /onlineオプションが使用できません (エラー50)
こちらも実行してみても、onlineのオプションが使用できないとのこと。
有線でつないでも見たが、結果は変わらず。
オフラインの修復という方法もあったので試してみた。
オフラインの修復
正常なWindowsからWindowsフォルダを持ってくる方法。
別のSSDにWindows10をクリーンインストール。その後、以下の通りコマンドを実行。
DISM /Online /cleanup-image /restorehealth source:c:\windows
(正常なWindowsのソースがC:¥windowsの場合)
こちらもオンラインの修復と同じ結果に。
/online オプションに問題があるのかと思い消してみたら、こちらはまた異なるエラーが表示された。
DISMエラー87 - パラメータが正しくありません。
レジストリの修復
ここまでエラーコード関連で色々検索してみたが、結果は変わらず。そこでスタートアップ修復のエラーで発生したログを見たところ、気になる記載があった。
ブートの重要なファイル が壊れています。
これまでどこが壊れているかもわからなかったので、一歩前進。
エラー文言で調べてみたところ、自分と状況が似たようなケースの人の解決法もいくつか見つかった。
残念ながら上記事の人は破損ファイル名が記載されていた、自分は記載されていなかった(壊れていることのみ)だったので、似たことを実施してみたのみ。
対処内容
-
コマンドプロンプトを実行
-
regedit と入力
-
レジストリエディタが開く。一覧から「HKEY_LOCAL_MACHINE」選択
-
レジストリエディタで「ハイブの読み込み」を選択
-
キー名に「temp」を指定(適当で問題ないらしい)
-
HKEY_LOCAL_MACHINE の下の temp で右クリックし「検索」
-
tmel.sys を検索
-
検索されたキーが見つかれば、左側のツリーを右クリックで削除
- すべて検索が終えれば、ハイブをアンロードする。
ここまで実施してみたが、結果はかわらず。
正常なWindowsフォルダの上書き
起動しないSSDのC:¥Windowsフォルダに、クリーンインストールしたSSDのC:¥Windowをダメ元で上書きコピー。
これも残念ながらCRITICAL_SERVICE_FAILEDが表示された。
環境の復旧
これまでの結果から、「ファイルを見たりすることはできるが、起動はできない」と判断。
残念だが復旧できなさそうなので、別のSSDにコピーしなおすことにした。
途中で用意した「OSをクリーンインストールしたSSD」に必要なドライバやアプリケーションをインストールしなおし、必要があればファイルをコピーしなおした。
幸い、ディスク自体が壊れているわけではなさそうで、ディレクトリはすべて見ることができた。
先にグラフィックボードのドライバをインストールした後にチップセットのドライバをインストールしてしまったため、途中でフリーズしてしまった。
チップセット→グラフィックボード の順にドライバを入れないとフリーズするので、今後気を付ける。
振り返って
エラーが発生してから、実に48時間ほど作業したがどうにもならなかった。色々やってみるのもいいが、こういうことが発生したら早めにやり直すことにしたほうがいいかもしれない。(記事になっていない更新プログラムの削除などもやってみたが、実行できず時間ばかり経過したため)
今になって振り返ってみれば、グラフィックボードのドライバを正しく入れなおしていなかったかもしれない。(本来グラフィックボードのドライバを入れた後に交換する場合、ツールなどを使用してきちんと削除したほうが良い。)
まぁ、2018年から2020年まで同じグラフィックボードを使用していたのにWindows Updateが一度もされていなかったので、何か別の理由もあったのかもしれない。