タグ「Registry」が付けられているもの

結局、解決はできたのですが、それまでに時間がかなりかかりました。

画像が少なくてわかりずらいかもしれませんが、忘れないうちにざっとメモっときます。

Windows10でも同じように解決できるようです。

原因はウィルスバスターのtmel.sysでした。

解決までの流れ↓

Windows7が起動できない

昨日まで動いていたパソコンが起動しなくなった

  • パソコンに電源を入れ、Windows7のロゴまでは出るけど、その後真っ暗になって起動しない。
  • スタートアップ修復が自動で始まるが必ず修復に失敗する。
  • F8を押してセーフモードで起動させようとしても、途中まで起動しかけて起動が途中で止まる。
  • Windows7のインストールディスクから起動し、システム復元をしようとしても失敗。

スタートアップ修復のエラー画面の「問題の詳細の表示」を開くと

問題イベント名:Startup Repair Offline

と表示された。スタートアップに問題があるらしい。

Startup Repair Offlineについて調べてみた

"Startup Repair Offline"を検索してみると、BIOSでストレージのモードをAHCIからIDEに変えたら直ったという記事がたくさんヒットしたので、AHCIをIDEを交互に変更してみたけど効果なし。

不良セクターを修復してみる

HDDの不調かな?とHDD generatorHDAT2をCDブートして不良セクター診断をしてみたが、不良セクターは見つからずHDDの故障ではなかった。

MBRを修復してみてもダメ

MBRが壊れているのかな?と思って、インストールディスクからコマンドプロンプトを起動して以下のコマンドを順番に実行してみた。

bootrec /fixmbr
bootrec /Rebuildbcd
bootrec /fixboot

それもで起動せず。

DISKPARTでシステムドライブをアクティブにしてみた

いろいろ調べているとシステムの入っているパーテーションをアクティブにするという記事を見つけた。

  1. コマンドプロンプトでdiskpartと打つ。
  2. list diskと打ってディスク番号を確認
  3. select disk 0と打つ
    (ディスク番号が0だった場合)
  4. list volumeと打ってボリューム番号を確認
  5. select volume 3と打つ
    (Cドライブのボリューム番号が3だった場合)
  6. list partと打ってWindowsの入っているパーテーションを確認
    (通常はアクティブパーテーションには*印がついている。なければアクティブになっていない)
  7. select part 2と打ってパーテーションを選択
    (Windowsの入っているパーテーションが2だった場合)
  8. activeと打ってアクティブ化
  9. 再度、list partと打つとパーテーション2に*印が表示されいればOK
  10. exitを打って終了し、再起動

すると、毎回起動時に始まっていたスタートアップ修復が始まらなくなったが、今度は違うエラー画面が出現...。

tmel.sysに関するエラー出現

tmel.sysがどうのこうのという黒い画面が起動途中で出現するようになりました。

File:tmel.sys
status:0xc0000098
info:□□□□□□□□□□□□□□□□□□

"tmel.sys"を検索してみると、このファイルはトレンドマイクロのウィルスバスターのドライバーらしい。なぜかこのファイルが破損していて、起動時に読み込もうとするとエラーになっている模様。

tmel.sysを上書きしてみる

tmel.sysc:\windows\system32の中にあります。

tmel.sysが壊れているなら、正常なtmel.sysで上書きしら直るかな?とHDDを取り出して他のウィルスバスターの入っているPCにつなぎ、正常稼働しているパソコンのtmel.sysを上書きしてHDDを元のPCに戻しました。でもダメでした。

tmel.sysの読込を無視する

tmel.sysを読み込むからエラーになるのだったら、読込をスキップすれば?と思い、tmel.sysの読込に関するレジストリをいじる方法を検索したらありました!

ざっくりとした流れ

  1. tmel.sysに関するレジストリをすべて削除
  2. Windowsが起動したらウィルスバスターの管理画面からシリアル番号を確認して控える

  3. ウィルスバスターをアンインストール
  4. 控えたシリアル番号でウィルスバスターを再インストール

これで直るらしい。

レジストリの削除方法

参考にしたサイトはこちら↓

  1. Windowsのインストールディスクからコマンドプロンプトを起動
  2. regeditと打ってレジストリエディタを起動
  3. 「HKEY_LOCAL_MACHINE」を選択
  4. 「ファイル」-「ハイブの読み込み」を選ぶ
  5. c:¥windows¥system32¥config¥SYSTEMを選択
    (拡張子なしのSYSTEMというファイル)
  6. 適当にキー名を入力
    (sysでもtempでもなんでもいい)
  7. 「tmel」を検索
  8. ヒットしたところを右クリックで削除
  9. F3を押すと次の「tmel」を検索し削除を繰り返す
    (4つくらいヒットしたので削除)
  10. 「ファイル」-「ハイブのアンロード」を選ぶ
  11. すべて閉じて再起動

すると見事にWindowsが起動しました!!

ここにたどり着くまで2日かかりました。

途中、ブルースクリーンも出ることがあり、クリーンインストールも覚悟しましたがあきらめずによかったです。ウィルスバスターを再インストールして無事に元通りになおりました。

こういった事例があるので、トレンドマイクロも修復ツールとか出せばいいのにとちょっと思いました。

最近のパソコンはBIOS(UEFI)で起動時のNumLockの有効/無効の設定ができないものがあるようです。

Windowsパソコンにログインでパスワードを入力しようとするとき、いつもNum Lockをオンにすることを忘れていてイラっとすることがあります。いちいちNum Lockボタンを押さなくてもいいようになんかいい方法がないかと探してみたらレジストリの設定でできることがわかりましたのでメモ。

Windows10/8.1/7共にレジストリの場所は共通のようです。(値は違いがあるようです。)

レジストリ

  • HKEY_USERS\.DEFAULT\Control Panel\Keyboard

ここにあるInitialKeyboardIndicatorsの値を変更します。

Windows10/8.1

2147483648(デフォルト)

 ↓

2147483650(NumLock有効)

(または2でもいいみたいです。)

Windows8

2147483648(デフォルト)

 ↓

80000002(NumLock有効)

(または2でもいいみたいです。)

Windows7

2147483648(デフォルト)

 ↓

2(NumLock有効)

0(NumLock無効)

ログオン前とログオン後

ログオン前の設定はHKEY_USERS\.DEFAULTをいじればいいみたいですが、ログオン後のNum LockはHKEY_CURRENT_USER\Control Panel\KeyboardにあるInitialKeyboardIndicatorsをいじればいいようです。

ちなみに、HKEY_USERS\.DEFAULTでは2147483648となっているのにHKEY_CURRENT_USER\Control Panel\KeyboardInitialKeyboardIndicatorsを見てみると2になっていました。

まだ試してないのでわからないのですが、Num Lockをオンにする数値は214748365080000002でなくても2だけでいいのかもしれません。

Window7、Windows10のInternet Explorer 11(IE11)のインターネットオプションでローカルインターネットゾーンのサイトの設定をするレジストリのメモ。

[インターネットオプション]-[セキュリティ]-[ローカルイントラネット]-[サイト]にある画面のチェックボックスのON/OFFの設定、[詳細設定]でイントラネットのURL(http://192.168.0.10またはhttp://intranet_web)を登録したとします。

チェックボックスの設定

デフォルトでは「イントラネットのネットワークを自動的に検出する」にチェックが入っています。

それを以下のように変更したとします。

Windows7

Windows10

このチェックボックスの状態のレジストリ

  • HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap

ここにあるレジストリをレジストリエディタで以下のように「0」か「1」に変更します。

AutoDetect
「イントラネットのネットワークを自動的に検出する」にチェックがない状態が「0」
IntranetName
「ほかのゾーンに指定されていないローカル(イントラネット)のサイトをすべて含める」にチェックが入っている状態が「1」
ProxyBypass
「プロキシサーバーを使用しないサイトをすべて含める」にチェックが入っている状態が「1」
UNCAsIntranet
「すべてのネットワークパス(UNC)を含める」にチェックが入っている状態が「1」
Windows7

Window10

イントラネットのURLの登録

[詳細設定]ボタンを押して表示される画面でイントラネットのWEBサイト(http://192.168.0.10)を登録したとします。

この状態を設定するレジストリ

  • HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges\Range1

この場所に以下のレジストリを登録します。

:Range
文字列値(REG_SZ) 値のデータ:192.168.0.10
http
DWORD値(REG_DWORD) 値のデータ:1

ドメインで登録する場合

イントラネットのサイトをIPアドレスではなく、ドメインで登録する場合は以下のようになります。イントラネットのサイト名が仮にintranet_webでhttp://intranet_webでアクセスできるサイトだったとします。

この場合のレジストリ

IPアドレスでアクセスする場合とは異なり、以下のレジストリの登録となります。

  • HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\intranet_web

ここに以下の登録をします。

http
DWORD値(REG_DWORD) 値のデータ:1

レジストリを変更するコマンド

バッチファイルで手っ取り早くレジストリを変更したいときは以下を使用。

@echo off


set REGROOT="HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap"

reg add %REGROOT% /f /v "AutoDetect" /t REG_DWORD /d "0" 
reg add %REGROOT% /f /v "IntranetName" /t REG_DWORD /d "1"
reg add %REGROOT% /f /v "ProxyBypass" /t REG_DWORD /d "1"
reg add %REGROOT% /f /v "UNCAsIntranet" /t REG_DWORD /d "1"


set REGROOT="HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges\Range1"

reg add %REGROOT% /f /v ":Range" /t REG_SZ /d "192.168.0.10" 
reg add %REGROOT% /f /v "http" /t REG_DWORD /d "1"


set REGROOT="HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\intranet_web"

reg add %REGROOT% /f /v "http" /t REG_DWORD /d "1"


pause

Windows8/8.1とIE9、IE10は環境がないのでわかりませんが同様ではないかと思います。