svchost.exe で win32 例外発生

この3日間ほど svchost.exe で win32 の例外発生でいろいろと不具合・不都合な状況になっていました。
(うーん、hatenaの日記をはじめたころは「自分はトラブルがあまりない」と言っていたのはなんだったのか)


状況(すべて正確に記述しているわけではないことを了承してください):

1) WindowsXP(SP2)起動直後にLuna(普通のXPのデスクトップ:スタートが緑)からクラッシック(昔のWindowsのデスクトップ:スタートがグレーで長方形)になってしまう。
2) Windows(Microsoft)Updateの自動更新が有効になっているにもかかわらず、ノートンインターネットセキュリティで「Windows(Microsoft)の自動更新が有効になっていない」といわれる。
3) Microsoft Update で更新をしようとしても更新の確認画面が一向に終わらない。
4) サウンドが出なくなり、ミキサーが見つからない、と言われ使えないときがある。(これは関係なさそうな、、、ただ、現象としては同時に発生)
5) イベントビューアを見ても、それらしいエラーや警告のメッセージがない。
6) VisualStudio2005(開発ツール)を入れているので、上述の現象発生時にJust-In-Timeデバッガが立ち上がり、svchost.exeでwin32例外が発生した、というメッセージが表示され、デバッグ&逆アセンブルをしてみると msi.dllの読み込みで失敗する。


とにかくイベントビューアのアプリケーション、システムにも「それらしい」ログがない、svchostは広い範囲で使われているので、svchost.exeでwin32例外といわれても問題の特定が難しい。


ただ、Microsoft Updateができない、デバッガでmsi.dllとあることから、記憶をたどると、、、たしかに、Officeのセキュリティパッチの更新・適用で「レジストリに書き込めない、、、」というエラーメッセージを見た「怪しい」記憶が。。。たしかに数日前だったような気がする。


おおよそ、それまで問題がないのに、なにもしないでエラーが発生するわけもなく、Windows Installer あたりの再構成・登録をやってみるが効果なし、、、、というところで「再インストール?」とあきらめかけていたが、気を取り直して、 svchost msi.dll win32 exception microsoft update というキーワードで Google で検索。


Windows Update Broke My Machine (svchost.exe -- application error), and How to Fix It


Scottさんという個人のブログで英語だが、エントリの時期は去年の7月、読んでみるとWindows Updateに関連するトラブルで、かつ、svchost.exe が msi.dllの読み込みで失敗、、とある。状況がまったく同じではないが、メッセージ自体は非常に似ている。


問題は、このブログが信用に値するかどうか、、、、だが。このエントリの「コメント」を読む限りだと、かなりの人がこれにて救われている ように 見える。(コメント自体も本物かどうかは疑ってかかるべきだが)


今の状態だと、どっちみち「OS再インストール」の可能性もあるわけだし、ここはひとつ、試してみたら、、、直った!


彼の手順とおりにいかなかったのは Software Distribution というフォルダの名前の変更だが、セーフモードにすることで名前の変更は可能。


その後、エラー発生を示すダイアログも出ない、クラッシックのデスクトップに戻らない、Microsoft Update も完了、サウンド(これがわからん、、、が)も問題なし、とすべての問題が解消しました。(いや、正確には「解決したように見える」だね。まだ。)


自動更新でエラーが起こったときの回復方法がもっと容易になれば。