Edited at

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

More than 1 year has passed since last update.


本記事の要約


  • Windows 10 が起動しなくなった。セーフモードも無理

  • DISM 実行したらレジストリマッピングに失敗した → レジストリが壊れた?

  • レジストリのバックアップがあったので復元したら直った


Windows が起動しない!

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

問題が発生したため、PC を再起動する必要があります。エラー情報を収集しています。自動的に再起動します。

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

自動修復で PC を修復できませんでした

その後、[詳細オプション] - [トラブルシューティング] と進んでスタートアップ修復を試みたが失敗。

復元ポイントも作成していないし、システムイメージファイルなんて作っていない。

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

最終手段として 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 が無事起動しました!

めでたしめでたし。