Windows 8.1上で古めのアプリケーションを実行する際、「プログラム互換性アシスタント」という機能が動作することがある。Windows Vista時代から実装され、現在のWindows 8.1でも当然使われている。だが、さらに以前から実装していた「互換モード」と混同しがちだ。今回は両者の違いを解説し、プログラム互換性アシスタントを無効にするTipsをお送りする。
「Windows 8.1ミニTips 第17回」より、2014年4月9日にリリースされたWindows 8.1 Updateを適用した環境を対象としています。
「互換性モード」と「プログラム互換性アシスタント」
まずは実装時期が古い「互換モード」から説明しよう。Windows XP時代から実装した互換モードは、実行するアプリケーションに渡すWindowsのバージョン情報や機能を抑止することで、互換性問題を回避するというもの。いわば「アプリケーションをだましている」のだ。
そもそもアプリケーションのインストーラーは、OSのバージョンをチェックする機能を備えており、アプリケーションが正しく動作するたに様々な確認を行うのが通例だ。そこで古いOS上で動作しているように見せるのが、Windowsが持つ互換モードの主目的となる。なお、互換性情報はレジストリエントリに記録した情報を次回起動時に読み取る仕組みだ。
一方の「プログラム互換性アシスタント(Program Compatibility Assistant)」は、古いアプリケーションを実行するときに発生する問題を検知し、対処するためのサービスだ。互換性問題の検知例としては、アプリケーションの実行に必要なコンポーネントの欠落や、セットアップ時にデバイスドライバーが正しくインストールされなかった場合など、多岐にわたる。
とはいえ、プログラム互換性アシスタントも万全ではない。「OSに対応していないアプリケーションを実行せざるを得ない状況」が問題なのだが、プログラム互換性アシスタントが提示する情報も限られており、ユーザー自身で対処した方が早いケースが少なくないのだ。
プログラム互換性アシスタントを無効にする
プログラム互換性アシスタントはWindowsのサービスとして稼働しているため、「サービス」からプログラム互換性アシスタントの本体「Program Compatibility Assistant Service」を停止すればよい。「スタートアップの種類」を「無効」に変更すれば、即座にサービスを止めて、次回以降の起動時も稼働しなくなる。
プログラム互換性アシスタントを再び有効にするには、「Program Compatibility Assistant Service」の「スタートアップの種類」を「自動」に変更してから開始すればよい。
コマンドラインから制御する
コマンドラインからの操作に慣れている方なら、ダイアログをたどらずに以下の手順を実行した方が簡単だ。管理者権限でコマンドプロンプトを起動し、「sc」コマンドを使って「Program Compatibility Assistant Service」の省略名である「PcaSvc」を制御する。
なお、コマンドラインからサービスを復帰させ、スタートアップを自動起動に戻す場合は、「sc config PcaSvc start=auto」「sc start PcaSvc」を、管理者権限を持つコマンドプロンプト上から実行する。
阿久津良和(Cactus)