本記事の要約
- Windows 10 が起動しなくなった。セーフモードも無理
- DISM 実行したらレジストリマッピングに失敗した → レジストリが壊れた?
- レジストリのバックアップがあったので復元したら直った
Windows が起動しない!
しばらく使っていなかった Windows 10 を最新の状態にしたほうがいいかな〜と思い、Windows Update をかけるために Windows を起動しようとしたらエラーメッセージ。
自動的に再起動したので自動修復してくれるのかなーと待っていたら再びエラーメッセージ。
その後、[詳細オプション] - [トラブルシューティング] と進んでスタートアップ修復を試みたが失敗。
復元ポイントも作成していないし、システムイメージファイルなんて作っていない。
セーフモードで起動すればどうにかなるんじゃないかと思ったものの、同じエラーメッセージが出現。
最終手段として Windows の初期化があるが、不用意にデータを削除したくなかったので色々調べた結果、コマンド プロンプトを使えばどうにかなるかもしれないとの考えに至った。
ファイルシステムには異常なし
まずはファイルシステムに問題がないか確かめるため、chkdsk コマンドを実行。
X:¥Windows¥System32>chkdsk /r c:
しばし待機後、スキャン終了のメッセージが表示された(以下は抜粋)。
Windows でファイル システムのスキャンが終了しました。
問題は見つかりませんでした。
これ以上の操作は必要ありません。
どうやらファイルシステムには異常はないようだ。
ただ、一番最後の行にログに記録されたメッセージを、状態 50 のイベント ログへ転送できませんでした。
というメッセージが表示されていた。よく分からないので、とりあえずスルー。オフラインだからだろうか。
システムファイルチェックに失敗?
次に、Windows にシステムファイルを修復するツールがないかどうか調べてみたところ、Microsoft 公式サイトに以下の記事があった。
Windows 10 の場合、DISM
コマンドを実行後、SFC
コマンドを実行するようだ。
対象の Windows は現在オフラインであることに注意して、DISM
コマンドでチェックだけしてみようとする(オプション等はこちらの記事を参考にした)。
X:¥Windows¥System32>dism /Image:c:¥ /Cleanup-Image /ScanHealth
すると、エラーが発生。まじかー。(エラーメッセージのログ取り忘れました。すみません)
作成された DISM ログファイルを参照してみる。すると以下のような気になるエラーメッセージが。
2018-05-06 17:55:37, Error DISM Offline Registry: PID=2564 TID=2584 "Error creating registry mapping: SOFTWARE" - COfflineRegistry::Init(hr:0x800703f1)
2018-05-06 17:55:37, Error DISM DISM OS Provider: PID=2564 TID=2584 Failed to mount the remote registry. - CDISMOSServiceManager::SetWindowsDirectory(hr:0x800703f1)
2018-05-06 17:55:37, Error DISM DISM.EXE: Failed to set the windows directory to 'C:¥Windows'. HRESULT=800703F1
Error creating registry mapping
と書かれているので、これはもしやレジストリファイルの破損では?
復元すればどうにかなるかもしれない。
レジストリファイルの復元
レジストリファイルの復元方法を探していたところ、以下の記事を見つけた。
どうやら Windows はレジストリのバックアップを定期的に取っているらしく、現在のレジストリファイル(以下の5ファイル)をバックアップファイルで置き換えることで復元が可能らしい。
- SAM
- SECURITY
- SOFTWARE
- SYSTEM
- DEFAULT
このうち、SOFTWARE
というのは先程の DISM ログでも出てきた。恐らくこのファイルが壊れているのだろう。
現在のレジストリファイルを一旦退避し、バックアップファイルをコピーする。
X:¥Windows¥System32>cd /d C:¥Windows¥System32¥config
C:¥Windows¥System32¥config>ren SOFTWARE SOFTWARE.BAK
C:¥Windows¥System32¥config>copy RegBack¥SOFTWARE SOFTWARE
念のため、他の4ファイルも差し替える。
C:¥Windows¥System32¥config>ren SAM SAM.BAK
C:¥Windows¥System32¥config>copy RegBack¥SAM SAM
C:¥Windows¥System32¥config>ren SECURITY SECURITY.BAK
C:¥Windows¥System32¥config>copy RegBack¥SECURITY SECURITY
C:¥Windows¥System32¥config>ren SYSTEM SYSTEM.BAK
C:¥Windows¥System32¥config>copy RegBack¥SYSTEM SYSTEM
C:¥Windows¥System32¥config>ren DEFAULT DEFAULT.BAK
C:¥Windows¥System32¥config>copy RegBack¥DEFAULT DEFAULT
PC を再起動したところ、Windows が無事起動しました!
めでたしめでたし。