PowerPoint/PowerPoint Viewer の起動に失敗する場合の対処方法

PowerPoint を持っていない人が .ppt ファイルを閲覧するためのソフトウェアとして、MicrosoftPowerPoint Viewer を無償公開している。
しかし、このソフトは、「閲覧だけなら PowerPoint 互換」というわけではない。PowerPoint だけなら起きなかった問題が、「PowerPoint Viewer を入れたとき」「PowerPointPowerPoint Viewer を一緒に入れたとき」には発生することがある。

PowerPoint Viewer を入れたのに別アプリから .ppt ファイルが開けない現象

例えばランチャなどのアプリに .ppt ファイルを登録した場合、選択するとそのファイルが開かれる、という動作が期待されていると思う。そして、PowerPoint がインストールされている場合には、実際そのとおりに動作する。しかし、PowerPoint のかわりに PowerPoint Viewer を入れた場合には、ランチャが .ppt ファイルを開けない場合がある。
これは、PowerPoint Viewer では「開く」という動作が定義されていないためだ。
エクスプローラで拡張子の関連付けを確認すると、.ppt に対して「スライドショー」「印刷」という 2 つのアクションしか設定されていないことがわかる。このうち、「スライドショー」がデフォルトとして設定されているので、エクスプローラなどからダブルクリックすると、スライドショー表示が開始される。
しかし、別アプリが「開く (open)」というアクションを実行しようとすると、失敗に終わるわけだ。
もし「ランチャで選択した場合には PowerPoint Viewer でスライドショー表示してほしい」というのであれば、拡張子 .ppt への関連付けに「open」を追加し、「スライドショー」と同等の設定を行ってやればいい。
起動するアプリ (上の例ではランチャ) 側で対応するのであれば、"open" 固定でなく、デフォルトのアクションを実行するようにすればいい。

PowerPointPowerPoint Viewer を一緒に入れたら別アプリから .ppt ファイルが開けない現象

PowerPoint をインストールした環境に PowerPoint Viewer をインストールすると、.ppt ファイルが開けなくなる場合があるようだ (詳しい再現条件がわかってないんだけど、どちらかを一旦アンインストールしてから、再度インストールとかするのかな???)。この場合も、前項と同じようにランチャなどの別アプリから開けなくなることがある。現象が似ているが、実は別の原因だったりする。
このパターンでは、拡張子の関連付けを確認すると、.ppt ファイルが一覧からなくなっていることがわかる (レジストリを見ると PowerPoint のアクション定義自体は残っているのだが、拡張子とアクションの関連付けが切れている)。
この場合は、Microsoft サポート技術情報の以下のページが参考になる。

157641 - [PP97]PowerPoint 97 を再登録する方法
http://support.microsoft.com/default.aspx?scid=kb;ja;157641

この手順を行うと、関連付け情報が作り直され、ランチャから開けるようになる (PowerPoint Viewer のみの場合と違い「開く (open)」もちゃんとある)。
ちなみに、このパターンでは「ランチャからは開けないけど、エクスプローラでダブルクリックすると開ける」こともある。これだけ見るとランチャが悪いように見えるが、実はエクスプローラは、OS とは別の関連付け情報を管理していて (右クリックメニューの「アプリケーションを指定して開く」で使われている情報)、そっちが使われるので開けるだけ。

プログラマー向け: 関連するレジストリは?

拡張子の関連付けでは、拡張子とアクションが別々に登録されている。
まず、拡張子の方は、レジストリキー HKEY_CLASSES_ROOT\.ppt として登録される。値は

(標準) : PowerPoint.Show.8 [REG_SZ]
Content Type : application/vnd.ms-powerpoint [REG_SZ] 

の 2 つ。上記は PowerPoint 2000 の場合。バージョンが違う場合、「(標準)」の最後につく数字が変わる。
次に、アクションはというと、レジストリキー HKEY_CLASSES_ROOT\PowerPoint.Show.8 として登録される。このキー名もバージョンによって変わるが、HKEY_CLASSES_ROOT\.ppt の「(標準)」と一致しているところが重要。
このキーのサブキー HKEY_CLASSES_ROOT\PowerPoint.Show.8\Shell の中に、各アクションがサブキーとして定義されている。キーの名称と表示上の名称が違う場合は、各サブキーの「(標準)」値に表示名が格納されている (例えば、キー名称 "Open" に対し、"開く(&O)")。
以上が、OS 標準の関連付け。上記の説明中で触れたエクスプローラ独自の関連付け情報は、HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts 以下に格納されている。