Windows 10 が起動しなくなったのでレジストリを復元したら直った件


本記事の要約

  • Windows 10 が起動しなくなった。セーフモードも無理
  • DISM 実行したらレジストリマッピングに失敗した → レジストリが壊れた?
  • レジストリのバックアップがあったので復元したら直った

Windows が起動しない!

しばらく使っていなかった Windows 10 を最新の状態にしたほうがいいかな〜と思い、Windows Update をかけるために Windows を起動しようとしたらエラーメッセージ。

自動的に再起動したので自動修復してくれるのかなーと待っていたら再びエラーメッセージ。

その後、[詳細オプション] - [トラブルシューティング] と進んでスタートアップ修復を試みたが失敗。
復元ポイントも作成していないし、システムイメージファイルなんて作っていない。

セーフモードで起動すればどうにかなるんじゃないかと思ったものの、同じエラーメッセージが出現。

最終手段として Windows の初期化があるが、不用意にデータを削除したくなかったので色々調べた結果、コマンド プロンプトを使えばどうにかなるかもしれないとの考えに至った。

ファイルシステムには異常なし

まずはファイルシステムに問題がないか確かめるため、chkdsk コマンドを実行。

cmd
X:¥Windows¥System32>chkdsk /r c:

しばし待機後、スキャン終了のメッセージが表示された(以下は抜粋)。

cmd
Windows でファイル システムのスキャンが終了しました。
問題は見つかりませんでした。
これ以上の操作は必要ありません。

どうやらファイルシステムには異常はないようだ。

ただ、一番最後の行にログに記録されたメッセージを、状態 50 のイベント ログへ転送できませんでした。というメッセージが表示されていた。よく分からないので、とりあえずスルー。オフラインだからだろうか。

システムファイルチェックに失敗?

次に、Windows にシステムファイルを修復するツールがないかどうか調べてみたところ、Microsoft 公式サイトに以下の記事があった。

Windows 10 の場合、DISMコマンドを実行後、SFCコマンドを実行するようだ。

対象の Windows は現在オフラインであることに注意して、DISMコマンドでチェックだけしてみようとする(オプション等はこちらの記事を参考にした)。

cmd
X:¥Windows¥System32>dism /Image:c:¥ /Cleanup-Image /ScanHealth

すると、エラーが発生。まじかー。(エラーメッセージのログ取り忘れました。すみません)

作成された DISM ログファイルを参照してみる。すると以下のような気になるエラーメッセージが。

dism.log
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 ログでも出てきた。恐らくこのファイルが壊れているのだろう。
現在のレジストリファイルを一旦退避し、バックアップファイルをコピーする。

cmd
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ファイルも差し替える。

cmd
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 が無事起動しました!
めでたしめでたし。