Windows7のパソコンを起動するとスタートアップ修復が始まり、Startup Repair Offlineという問題で修復できず、Windowsも起動できない状況になりました。問題解決までに時間がかなりかかりましたが解決方法を忘れないうちにメモ。Windows10でも同じように解決できるようです。
原因はウィルスバスター
結論から言うと原因はウィルスバスターのtmel.sysでした。まさかウィルスバスターが原因でWindowsが起動しなくなるとは思ってもいませんでした。
解決までの流れ
Windows7が起動できない
昨日まで動いていたパソコンが起動しなくなった
- パソコンに電源を入れ、Windows7のロゴまでは出るけど、その後画面が真っ暗のまま起動しない。
- スタートアップ修復が自動で始まるが必ず修復に失敗する。
- F8を押してセーフモードで起動させようとしても、途中まで起動しかけて起動が途中で止まる。
- Windows7のインストールディスクから起動し、システム復元をしようとしても失敗。
スタートアップ修復のエラー画面の「問題の詳細の表示」を開くと
問題イベント名:Startup Repair Offline
と表示された。スタートアップに問題があるらしいが、しかもスタートアップ修復に失敗するので困った状態...。
Startup Repair Offlineについて調べてみたけど解決せず
この時点ではウィルスバスターが原因と分かっていなかったので、"Startup Repair Offline"を検索してみると、BIOSでストレージのモードをAHCIからIDEに変えたら直ったという記事がたくさんヒットしたので、AHCIとIDEを交互に変更してみたけど原因が違うので効果なし。
不良セクターを修復を試したけどダメ
HDDの不調かな?とHDD generatorやHDAT2をCDブートして不良セクター診断をしても不良セクターは見つからずHDDの故障ではなかった。
MBRを修復してみてもダメ
MBRが壊れているのかな?と思って、Windows7のインストールディスクからコマンドプロンプトを起動して以下のコマンドを順番に実行して再起動してみた。
bootrec /fixmbr bootrec /fixboot bootrec /Rebuildbcd スタートアップ修復
それでも起動せず。
DISKPARTでシステムドライブをアクティブにしてみた
いろいろ調べていくうちにシステムの入っているパーテーションをアクティブにするという記事を見つけました。DISKPARTコマンドで調べてみると、Windowsの入ったCドライブのパーテーションがなぜかアクティブになっていませんでしたので、DISKPARTでアクティブ化してみました。
- コマンドプロンプトでdiskpartと打つ。
- list diskと打ってディスク番号を確認
- select disk 0と打つ
(ディスク番号が0だった場合) - list partと打ってWindowsの入っているパーテーションを確認
(通常はアクティブパーテーションには*印がついている。なければアクティブになっていない) - select part 2と打ってパーテーションを選択
(Windowsの入っているパーテーションが2だった場合) - activeと打ってアクティブ化
- 再度、list partと打つとパーテーション2に*印が表示されるか確認
- detail partitonで本当にアクティブになっているか確認
- exitを打ってdiskpartを終了
- 再度、MBRの修復のコマンドを実行
bootrec /fixmbr bootrec /fixboot bootrec /Rebuildbcd
- 続けてスタートアップ修復を行い再起動
すると、毎回起動時に始まっていたスタートアップ修復は始まらなくなり、今度は違うエラー画面が出現...。
tmel.sysに関するエラー出現
tmel.sysがどうのこうのという黒い画面が起動途中で出現するようになりました。
File:tmel.sys
status:0xc0000098
info:□□□□□□□□□□□□□□□□□□
"tmel.sys"を検索してみると、このファイルはトレンドマイクロのウィルスバスターのドライバーらしい。なぜかこのファイルが破損していて、起動時に読み込もうとするとエラーになっている模様。
「3. Click "Rapair your computer."」とあるので、再起動してコンピューターの修復を試みるものの、何度やってもこの画面が表示されました。
tmel.sysを上書きしてもダメ
tmel.sysはc:\windows\system32\driversにあります。
tmel.sysが壊れているなら、正常なPCから取り出したtmel.sysで上書きしたら直るかな?とHDDを取り出して他のウィルスバスターの入っているPCにつなぎ、正常稼働しているパソコンのtmel.sysを上書きしてHDDを元のPCに戻しました。でもダメでした。
tmel.sysの読込を無視させたら効果あり!
tmel.sysを読み込むからエラーになるのだったら、読込をスキップすれば?と思い、tmel.sysの読込に関するレジストリをいじる方法を検索したらありました!ざっくりとした流れは以下の通り。
- tmel.sysに関するレジストリをすべて削除(レジストリ削除の詳しい方法は後述)
- Windowsが起動したらウィルスバスターの管理画面からシリアル番号を確認して控える
- ウィルスバスターをアンインストール
- 控えたシリアル番号でウィルスバスターを再インストール
これで直るらしい。
NTTのフレッツシリーズに付属している「セキュリティ対策ツール」も同様です。
レジストリの削除方法
- Windowsのインストールディスクからコマンドプロンプトを起動
- regeditと打ってレジストリエディタを起動
- [HKEY_LOCAL_MACHINE]を選択
- [ファイル]-[ハイブの読み込み]を選ぶ
- c:¥windows¥system32¥config¥SYSTEMを選択
(拡張子なしのSYSTEMというファイル)
- 適当にキー名を入力
(sysでもtempでもなんでもいい)
- [編集]-[検索]またはCtrl+Fからtmelを検索
- ヒットしたところを右クリックで削除
- F3を押すと次のtmelでヒットする部分表示されるので削除を繰り返す
(とりあえず検索でヒットした以下4つを削除)
- HKEY_LOCAL_MACHINE\temp\ControlSet001\CotrolにあるEarlyLaunch! BackupPath
- HKEY_LOCAL_MACHINE\temp\ControlSet001\services\tmel
- HKEY_LOCAL_MACHINE\temp\ControlSet002\CotrolにあるEarlyLaunch! BackupPath
- HKEY_LOCAL_MACHINE\temp\ControlSet002\services\tmel
- tempを選択し[ファイル]-[ハイブのアンロード]する
- すべて閉じて再起動
すると見事にWindowsが起動しました!!
ここにたどり着くまで2日かかりました。
途中、ブルースクリーンも出ることがあり、クリーンインストールも覚悟しましたがあきらめずによかったです。ウィルスバスターを再インストールして無事に元通りになおりました。
こういった事例があるので、トレンドマイクロも修復ツールとか出せばいいのにとちょっと思いました。
参考サイト
- http://blogs.yahoo.co.jp/zx900a3_uk/49329901.html
- http://www.yoshi-den.co.jp/index.php?QBlog-20160814-1
追記(2017/07/25)
ちなみに、tmel.sysのtmelは何の略だろうと考えてみたところ、削除したレジストリからTrend Micro Early Launchの略なのかもと思い、WEBで検索してみました。すると、Early-Launch Anti-Malware (ELAM) ドライバという言葉がヒットしました。
Early-Launch Anti-Malware (ELAM) ドライバは早期起動アンチマルウェア対策と言って、Windows10/8.1/8のセキュアブートに対応したドライバで、OS起動時にマルウェア対策を行うもののようです。 これはデフォルトで有効になっていて、起動時の脅威からオペレーティングシステムを保護するためOSが起動する最初のブートスタートドライバで、他のブートスタートドライバをチェックし、特定のドライバを初期化するかどうか、またはマルウェアとして分類する必要があるかどうかを判断するもののようです。
tmel.sysはEarly-Launch Anti-Malware (ELAM) ドライバなのかな?と、ウィルスバスターをインストールしているWindows10のPCでC:\Windows\System32\driversにあるtmel.sysのプロパティを見たところTrend Micro Early Launch Anti-Malware Driverと記載がありましたで、Early-Launch Anti-Malware (ELAM) ドライバでした。
ということで、試してしませんがtmel.sysが壊れて起動できないといったエラーが出た際は、
- BIOSまたはUEFIでセキュアブートを無効(Disable)してみる
- コマンドで早期起動アンチマルウェア対策を無効にしてみる
をやってみると通常通りの起動ができるかもしれません。起動後はウィルスバスターをアップデートするか再インストールするかして、セキュアブートと早期起動アンチマルウェア対策を元に戻せば、もっと簡単に解決できるかもしれません。
早期起動アンチマルウェア対策を無効/有効にするコマンド
参考に見つけたコマンドです。本当に有効/無効にできるかは試していませんがメモ。このコマンドを実行するためには管理者としてコマンドプロンプトを起動してから行う必要があります。
無効にする
bcdedit / set {current} disableelamdrivers yes
有効にする
bcdedit / set {current} disableelamdrivers no
追記(2017/07/27)
tmel.sysは通常、Windows 7のPCには不要なもののようです。実際に正常はWindows 7のPCのC:\Windows\System32\driversにはtmel.sysが存在していませんでした。
では、なぜtmel.sysが入ってしまうのか?を考えたときに思ったのが、例えばWindows7からWindows10にアップグレードしたけど、Windows10からWindows7に戻したりしたすると起こる症状ではないかと思います。
Windows10の時にウィルスバスターをインストールするとtmel.sysが入りますが、Windows7に戻したときにそのままtmel.sysが残り、OS起動時にロードされてエラーで起動できなくなるみたいな感じで起こることなのかもしれません。