PCを起動させたら、WindowsOSが動かなくなった事象に遭遇しました。
セーフモードすら起動しなくなっていたし、書いてあるメッセージを見ても、なにをどうすればいいのかわからないという状態でかなり焦りましたが、なんとかHDD初期化やOS再インストールなどをせずに、簡単(?)な手順で修復してWindowsを正常に起動させられるようになったので、解決方法を載せておきます。原因特定よりもとにかく修復して起動できればいいという人向けの内容だと思っています。
ブートの重要なファイルが壊れていますの起きた環境と状況
まず、私が経験した起動エラートラブル時について説明します。
似た状況であれば、似た手順で解決できると思うので、この記事を参考にしてください。
環境は、Windows7です。特にWindows10にアップさせたりとかダウンさせたりとかはしたことないです。
PCを起動させたら、以下の画像のように「スタートアップ修復ではこのコンピューターを自動的に修復できません」「この問題を自動的に修復できません」とメッセージがでてきてWindowsが動かなくなってしまいました。
なにか特別な作業をした記憶もないし、なにをすればいいのかわからなかったので、何度か再起動を繰り返したのですが、同じメッセージが出るだけでした。
それで、原因の特定をするために「診断と修復の詳細の表示」をクリックしたところ出てきたのが、以下の画像にある「ブートの重要なファイルが壊れています」でした。
ブートの重要なファイルが壊れていますの原因特定について
上の画像を見ると、私が経験した起動エラーは、「D:\Windows\system32\DRIVERS\tmel.sys」、「D:\tmel.sys」にあるファイルが原因で、どうやらデバイス(ドライバ)の問題らしいということが推測できます。
これ以上は、私には詳しくわかりません。
tmel.sysが壊れてます(再現できました)にもう少し詳しい推測らしいものが書かれていますが、私としては原因の特定よりも修復方法や手順がわかればよいという考えですので、ここでは省きます。
やることは、起動を邪魔しているファイルがあるのでそのファイルをどうにかしようということになります。
ブートの重要なファイルが壊れていますの解決手順
ここからは具体的な修復手順の説明に入ります。
(コマンドプロンプトやレジストリなどの言葉が分からなくても、なんとなく手順を進められるようになっている……と思います。レジストリについては、右クリックメニューをレジストリで変更設定するに基本的なことは書いてあるので、操作する上で気になる方は見てください)
①まず、最初の画像にでてきている、「システムの復元とサポートの詳細オプションの表示」をクリックします。
②次に、以下のような画像が出てきたら「コマンドプロンプト」を選びます。
下の画像に書かれているとおりに、コマンドプロンプトを開くには管理者権限を持ったユーザを選ぶ必要があります。管理者権限を持ったユーザを選んで、普段ログインするときに使っているパスワードでOKを押します。
③下の画像のようにコマンドプロンプトが開いたら、ここで「regedit」と打ち込んでEnterを押すと、レジストリエディタが立ち上がります。
④レジストリエディタでハイブの読み込みを行います。
このレジストリエディタで、表示されているレジストリは、普段使っているWindowsのレジストリではなく、「システム回復オプション」のレジストリらしいので、普段使っているレジストリを読み込む必要があるとのこと。
簡単に言えば、問題が発生しているファイルがある場所を読み込ませる必要があるということです。
ということで、修正対象のファイルがどこにあるのかというのを知る必要があります。
また、レジストリキーとファイルパスの書き方では違うため、どこのファイルパスがどのレジストリキーに対応しているかを知る必要があります。
一応、多くの修正ケースにおいて修正する対象になるであろうレジストとリファイルの対応を挙げておきます。
レジストリキー | (ハイブ)ファイル パス |
---|---|
HKEY_CURRENT_USER | C:\Users\(ユーザー名)\NTUSER.DAT ※Vista以降 |
HKEY_LOCAL_MACHINE\SOFTWARE | C:\Windows\System32\config\SOFTWARE |
HKEY_LOCAL_MACHINE\SYSTEM | C:\Windows\System32\config\SYSTEM |
(「ハイブの読み込み」ができるのは、「HKEY_LOCAL_MACHINE」か「HKEY_USERS」のみなので、この2つのレジストリキーに対応していないファイルで起きた問題の場合は、他の解決方法を探してください)
私の場合は、「診断と修復の詳細の表示」で「D:\Windows\system32\DRIVERS\tmel.sys」のファイルが修正対象だとわかっていましたので、下図のように「HKEY_LOCAL_MACHINE」を選択状態にして「ハイブを読み込む」をしました。
(「ハイブを読み込む」はレジストリキーを選択状態にしないと、選択できないので注意してください)
ここは申し訳ないですが、画像がないのですが、どこのファイルを選ぶのかのウィンドウになっているはずです。
私の場合ですと、Dフォルダのアイコンを探して選んで、Windowsフォルダを選んで、System32フォルダを選んで、configフォルダを選んで、最後にSYSTEMファイルを選んで開きます。
このsystemファイルは拡張子が何もついてないsystemファイルを選んでください。
そうすると、下の画像がでてきます。
ここでは、「temp」などと適当に名前を付けて、OKを押します。
⑤起動の不具合を起こしているファイルを探して操作
そうすると、「HKEY_LOCAL_MACHINE」の下に「temp」ができているはずです。そこから目的のファイルがどこにあるか頑張って探します。
私の場合は、HKEY_LOCAL_MACHINE>temp>tempControlSet001>srvices>tmelと階層を下っていくと目的の「tmel.sys」と書かれている場所が見つかりました。
これがWindows起動の不具合を起こしているようなので、まるっと削除します。
「tmel」のフォルダっぽく表示されている箇所で右クリックをして、削除を選択して削除します。
レジストリエディタもコマンドプロンプトも右上の「×」ボタンで閉じてしまって、パソコンを再起動させます。
初回の再起動はいつもよりも時間がかかりましたが、いつもWindowsの画面が無事に立ち上がってくれました。
(私の場合は、再起動させる前にハイブのアンロードを行わなくても問題なかったですが、うまく再起動できなかった方はハイブのアンロードも試してください)
このやり方で問題なくWindowsは動いてくれていますので、起動できなくて困っている人の参考になれば幸いです。
それにしても、予想外のことで起動できない状況になって焦ってみると、やはりバックアップは取っておくべきだなと痛感しました。