Office を修復したら Office が起動できなくなった場合の対処方法 (?)

ある日、Excel を使ってたら不意にエラーが表示された。VBAコンポーネントがなんとかって文面だったと思う。で、「アプリケーションの追加と削除」から Office の「修復」ってのをやってみたら、以降 Office が起動できなくなってしまった。

症状

いろいろあやふやなんだけど、だいたいこんな感じ。

  • Microsoft Office 2003 を使っていた。
  • 何かのソフトウェアをインストールして以降 (?)、Office VBA のエラーが表示されるようになった。
  • 「アプリケーションの追加と削除」から Office のセットアッププログラムを起動して「修復」をしたら、Office アプリ (Excel とか PowerPoint とか Word とか) で起動時にエラーが表示されるようになり、起動できなくなってしまった。
  • Office 2003 をアンインストールして再インストールしても変わらず。
  • Office 2003 をアンインストールして Office 2007 をインストールしても変わらず。
  • さらに、Office とまったく関係のないソフトをインストールしようとした時にも "Internal Error 2908" というエラーメッセージが表示されるようになり、正常にインストールが行えなくなった。
  • Office も他のアプリのインストーラも、PC に別のユーザでログインして同じことをやると、普通に使える。

対処方法

ComicStudio というソフトウェアのサポート情報に、エラーコード 2908 でインストーラが失敗する現象の対処方法が書かれていた。ページが長いので該当箇所を引用させて頂くと、

5. 「レジストリエディタ」を起動します。
(WindowsXPをご使用の場合)
レジストリエディタを起動するには、[スタート]ボタンをクリックし、[ファイル名を指定して実行]をクリックします。次に、[名前]ボックスに regedit と入力し、[OK]をクリックします。
(WindowsVistaをご使用の場合)
レジストリエディタを起動するには、[スタート]ボタンをクリックし、[検索の開始]ボックスに regedit と入力し、[Enter]キーを押します。
6.次のレジストリキーに移動して、展開します。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData
7.上記レジストリキー配下にあるキーを確認します。S-*-*-*-*といった情報があることを確認します。複数ある場合はすべてのキーに対して以降の確認および作業を行ってください。ここではS-1-1-11-1111というキーを例に示します。
8.S-1-1-11-1111キーを展開します。
9.S-1-1-11-1111キー配下に、Componentsというキーがあることを確認します。このキーがない場合は、続いて別のS-*-*-*-*キーをご確認下さい。
10.Componentsキーを選択して、マウスを右クリックしてポップアップメニューを表示し、[新規]-[キー(K)]を選択します。
11. 新しいキー #* が作成されるのを確認します(多少時間がかかる場合がございます)。キーが作成できた場合は、このレジストリキーは問題ありません。新しいキー #*を選択して、マウスを右クリックしてポップアップメニューを表示し、[削除(D)]を選択してキーを削除します。
重要:必ず先の手順で作成されたキーのみを削除してください。
12.エラーメッセージ「キーを作成できません。固有のキー名を生成できません。」が表示され、キーが作成できなかった場合は、Componentsキーを選択して、マウスを右クリックしてポップアップメニューを表示し、[名前の変更(R)]を選択します。
13.Componentsキーの名称を、アンダーバーを追加して、Components_ など別の名称に変更します(多少時間がかかる場合がございます)。
14. 再度、 Components_ を選択し、[名前の変更(R)]を実行して、元の名称 Components に戻します。
重要:つづりの誤りにご注意ください。
15. 再度、10〜11のステップを実行しキーが問題なくなったことを確認します。
16. すべてのS-*-*-*-*に対して問題がなくなれば作業は終了です。OSを再起動してください。

ComicStudio.net | Windows版「ComicStudio4.0」シリーズにおけるインストール時のエラーについて

この手順に従ってみたら、Office アプリもその他のインストーラも正常に動作するようになった。めでたしめでたしにかぎりなくちかいなにか。

つまりどういうこと?

ComicStudio サイトの手順と、そこに書かれているレジストリキーは、つまり次のようなことを言っている。

  • Windows プログラムは、自分が使用するコンポーネントレジストリに登録する。具体的には、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\<ユーザのSID>\Components\ の下にサブキーが作成され、そこにコンポーネントの情報が格納される。
  • エラー 2908 が発生している環境では、どういうわけか、このサブキー作成ができない状態になっている。
  • どういう仕組みかよくわからないけど、キー Components を一旦リネームすると、再びサブキーが作成できる状態になる。リネームしたのを元に戻せば万事が元通り。やったね!

エラー 2908 で困ってるっていう話はあちこちの blog やフォーラムに書かれてるんだけど、この手順が書いてあったのは ComicStudio のサイトだけだった。
もっとも、エラー 2908 自体は他の原因でも起こるようで、「インストーラに含まれている内容が多すぎるとエラー 2908」とか、「インストール済み .NET Framework のバージョンがレジストリに変なかたちで登録されているのでインストール時のチェックがうまくいかない。そのレジストリキーを削除すれば OK」とか、原因によっていろいろあるみたいだ。