「Microsoft Application Compatibility Toolkit 4.1」に含まれる「Compatibility Administrator」
「Microsoft Application Compatibility Toolkit 4.1」に含まれる「Compatibility Administrator」
[画像のクリックで拡大表示]

 マイクロソフトは4月26日,2週間前に出したばかりのセキュリティ更新プログラム(MS06-015,KB908531)をリリースし直した。当初のパッチを適用すると,日本ヒューレット・パッカード(HP)やNVIDIAが提供するソフトウエアで不具合が発生した。マイクロソフトはこの問題に対処するために,パッチをリリースし直したのである。

 MS06-015のパッチは主に,エクスプローラのセキュリティぜい弱性を修正するためのものである。ただし,パッチを適用すると,エクスプローラ上でユーザーによって起動されたプログラムを検証する「Verclsid.exe」というプログラムがOSに追加された。

 このVerclsid.exeと,HPやNVIDIAが提供するソフトの相性が悪かった。Verclsid.exeは,HPやNVIDIAのソフトを検証しようとするとプログラムの応答が停止し,その結果OSが不安定になることがあったのだ。

 4月26日に公開された新パッチは,この不具合を解消するためにとても単純な対策を実施した。新パッチは,OSのレジストリを修正して,HPとNVIDIAの該当ソフトを「Verclsid.exeが検証を行わないプログラムのリスト(許可リスト)」に追加したのである。Verclsid.exeにも,HPやNVIDIAのソフトにも手を加えていない。OSに「HPとNVIDIAのソフトにだけ適用される特別なルール」を追加することによって,この問題を解決したのであった。

Windowsの互換性は,「場当たり的な対策」の猛烈な積み重ね

 「マイクロソフトは,なんて場当たり的な対策をするのだろう」---そう思う読者も多いだろう。しかし,私たちが当たり前のことだと思っている「Windowsにおけるバージョン間でのソフトウエア互換性」は,実はこういった場当たり的な対策の猛烈な積み重ねによって維持されている。そのことを,どれほどの方がご存じだろうか。

 私たちの多くは,古いバージョンのWindows向けに作られたソフトが新しいバージョンのWindowsで動くことを,当然のことだと思っている。そして,古いソフトが新しいWindowsで動かなかったら「けしからん」と腹を立てる。しかしこういったソフトウエアの互換性は,非常に涙ぐましい努力によって維持されているのだ。

 そのことを明らかにするツールが,マイクロソフトから無償で提供されている。「Microsoft Application Compatibility Toolkit(ACT)」である(公開サイト)。

 ACTを使うと,Windows XP/Windows Server 2003が備える「互換性データベース」を閲覧できる。Windows XP/Windows Server 2003には,古いソフトを動かすための「互換モード」という機能が搭載されている。互換モードは,Windows XPよりも古いWindowsの「ふり」をする機能で,そのソフトを動かすときだけ特定のOS環境をエミュレートする。Windows XP/Windows Server 2003には,「互換モードを適用するソフトのリスト」が入っている。それが互換性データベースである。

 互換性データベースに登録されているのは,Windows XP/Windows Server 2003のベータ・テスト中にまともに動作しなかった古いソフトである。その数は,Windows XP Service Pack 2の場合で,実に1915個もある。本来であればこれだけの数のソフトが,Windows XP SP2でまともに動作しないはずなのだ。しかし,OSの側であらかじめ「特別な配慮」が設定されているので,ユーザーは互換性問題に気づかずに,これらのソフトを使用できる。

Windows 95用「ときめきメモリアル」にもきちんと対応

 実際にACTで互換性データベースをのぞいてみよう。ACTをインストールして,[スタート]−[Microsoft Application Compatibility Toolkit 4.1]−[Tools]から「Compatibility Administrator」というツールを起動する。画面に見える[System Databese]というツリー上の存在が互換性データベースである(図)。[System Databese]−[Applications]のツリーを選択すると,互換性データベースに登録されているアプリケーションのリストが出てくる。

 各アプリケーションには,どのような互換モードの機能を適用するかが記されている。例えば「Visual Basic 6.0」には,「DisableNX」という「互換性フィックス」(互換モードの機能のこと)が割り当てられている。これが割り当てられていると,Windows XP SP2で追加された,ハードウエアの機能によってバッファ・オーバーフローを事前に防ぐ「ハードウエアDEP(データ実行防止)機能」が無効になる。つまり,Visual Basic 6.0をWindows XP SP2で利用すると,本来はハードウエアDEPによって実行が妨げられる。しかし,あらかじめDisableNXという互換性フィックスが設定されているので,Visual Basic 6.0はWindows XP SP2で問題なく動作するのだ。

 互換性データベースに並ぶアプリケーションの名前を眺めていると飽きない。「Visual Basic」もそうだが,マイクロソフト製のソフトも大量に並んでいるし,「Photoshop」といった有名ソフトの名前も見える。日本語も見受けられる。「ときめきメモリアル」「信長の野望戦国群雄伝」「信長の野望天翔記」---いずれもかなり古いソフトだが,こういったゲームもWindows XPで動くように,配慮がされているのだ。

 現在,世界中で何千万台と出荷されているWindows XPにはもれなく,Windows 95版の「ときめきメモリアル」を正常に動作させるための設定が施されている---そう考えると,なんだか胸が高鳴ってしまうのは筆者だけだろうか?

 Windowsの互換性が高いか低いかを,ここで議論するつもりはない。しかし筆者は,Windowsの互換性維持のために払われている努力のことを,率直に「凄い」と思っている。マイクロソフトだけが努力しているのではない。数多くのサード・パーティ・ソフトウエア・ベンダーが協力して初めて,高い互換性が実現されている。

 現在,Windows Vistaのテストが行われている。きっとWindows Vistaにも,大量の互換モードが設定されることだろう。そこには,数多くの技術者によるひたむきな努力が込められているはずだ。各社のテスターの健闘を祈りたい。