2010-12-12

Missing hal.dll…

妻が Windows PC の調子が悪いと言うのでみてみた。

次のファイルが存在しないかまたは壊れているため、Windowsを起動できませんでした:
<Windows root>\system32\hal.dll.
上記のファイルをインストールし直してください。


hal.dll の "hal" が hardware access layer であることくらいは知っているので(違ってたらゴメン)、このファイルがないと Safe Mode でも起動すらできないのは当たり前。なんらかのトラブルで消してしまったのかなとも思ったが、とりあえず Google で検索してみた。

検索結果の多くは、実際にはファイルが消えているのではなくて、Boot.ini が書き変わってしまって、間違ったパーティション上のファイルを参照してるケースのもの。その場合は "bootcfg /rebuild" とか "fixboot" などのコマンドを回復コンソールを使って実行して、正常な Boot.ini に戻してやることで Windows が起動できるようになるとのこと。

さっそく、妻のPC(NEC の Lavie LR500/9 という5年くらい前の機種)のインストール用ディスクが見当たらなかったので、VMware FUSION 用に買った Windows XP Professional SP3 のインストール用ディスクでブートして、回復コンソールを起動してみた。しかし、Boot.ini に異常は見当たらず、実際に hal.dll がなくなっていた。

仕方ないので、Microsoft からダウンロードした、SP3 のネットインストール用のイメージ から hal.dll を取りだして(hal.dl_ というファイルを expand コマンドで展開)、それを所定の場所にコピーして再起動してみた(まぁ、コピーするまでいろいろあったんだけど……)。

これでリブートしてみると、ちゃんと WIndows は起動するんだけど、なんかやっぱりちょっと挙動がおかしい。ログオン直後に「DLLファイルがない」とかいうアラートが一瞬でるし、なにをするにも妙に時間がかかるし、Microsoft Update がもれなく失敗するし、McAfee VirusScan もまともに動かない。Explorer も立ち上がりに異常に時間がかかるし、イベントビューワを開こうとしても「eventvwr.msc が見付かりません」とか。

そうこうしているうちに、さっきコピーした "C:¥Windows¥System32¥hal.dll" がいつの間にか消えているのに気付いた!!

もしかすると Microsoft Update が失敗したのが関係してるのかも、とか思ってもう一度 hal.dll をコピーして再起動して、しばらく観察していると今度は Microsoft Update もなにも実行していないのに、"c:¥Windows¥System32" を開きっぱなしの Explorer のウインドウから hal.dll が目を話した隙に消えているのが確認できた。ということは、ハードウェアのトラブルでなければ、誰か(なんらかのプログラム)がこれを消しているわけで、この時点でとりあえず復旧を断念して、ユーザデータのバックアップを取ることにした。
(ちなみにブートパーティションの中身をまるごとコピーしたものを Intego の VirusBarrier でスキャンしてみたけど、なんにも見付からなかったみたい。Mac 用のソフトだから Windows 系のマルウェアには弱いのか?)

hal.dll を誰が消しているのかというのも問題だけど、元通り使えるようにするのが一番大事なわけで、どうするかなと今考えているところ。新しいのを買うにしても Mac にするか Windows にするか……。でもちょっと困ったなぁ。