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が持つ互換モードの主目的となる。なお、互換性情報はレジストリエントリに記録した情報を次回起動時に読み取る仕組みだ。

プロパティダイアログの「互換性」タブで指定する「互換モード」。OSのバージョン情報や画面解像度などの設定などを制御する

一方の「プログラム互換性アシスタント(Program Compatibility Assistant)」は、古いアプリケーションを実行するときに発生する問題を検知し、対処するためのサービスだ。互換性問題の検知例としては、アプリケーションの実行に必要なコンポーネントの欠落や、セットアップ時にデバイスドライバーが正しくインストールされなかった場合など、多岐にわたる。

こちらはWindows 7上でキャプチャした「プログラム互換性アシスタント」。修正プログラムへのリンクや問題の原因説明を確認できる

とはいえ、プログラム互換性アシスタントも万全ではない。「OSに対応していないアプリケーションを実行せざるを得ない状況」が問題なのだが、プログラム互換性アシスタントが提示する情報も限られており、ユーザー自身で対処した方が早いケースが少なくないのだ。

プログラム互換性アシスタントを無効にする

プログラム互換性アシスタントはWindowsのサービスとして稼働しているため、「サービス」からプログラム互換性アシスタントの本体「Program Compatibility Assistant Service」を停止すればよい。「スタートアップの種類」を「無効」に変更すれば、即座にサービスを止めて、次回以降の起動時も稼働しなくなる。

「Win」+「R」キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「services.msc」と入力して「OK」ボタンをクリック/タップする

「サービス」が起動したら、一覧にある「Program Compatibility Assistant Service」をダブルクリック/タップする

ドロップダウンリストから「無効」を選択し、「停止」→「OK」と順にボタンをクリック/タップする

プログラム互換性アシスタントを再び有効にするには、「Program Compatibility Assistant Service」の「スタートアップの種類」を「自動」に変更してから開始すればよい。

コマンドラインから制御する

コマンドラインからの操作に慣れている方なら、ダイアログをたどらずに以下の手順を実行した方が簡単だ。管理者権限でコマンドプロンプトを起動し、「sc」コマンドを使って「Program Compatibility Assistant Service」の省略名である「PcaSvc」を制御する。

「Win」+「X」キーを押してクイックアクセスメニューを呼び出し、「コマンドプロンプト(管理者)」をクリック/タップするか、「A」キーを押す

プロンプトに「sc query PcaSvc && sc qc PcaSvc」と入力して「Enter」キーを押す。これで現在のサービス状態と構成を確認できる

サービスを停止するため、プロンプトに「sc stop PcaSvc」と入力して「Enter」キーを押す

今度はサービスのスタートアップを無効にするため、プロンプトに「sc config PcaSvc start= disabled」と入力して「Enter」キーを押す

再び「sc query PcaSvc && sc qc PcaSvc」を実行した状態。スタートアップ設定を示す「START_TYPE」と現在のサービス状態を示す「STATE」が変化している

なお、コマンドラインからサービスを復帰させ、スタートアップを自動起動に戻す場合は、「sc config PcaSvc start=auto」「sc start PcaSvc」を、管理者権限を持つコマンドプロンプト上から実行する。

阿久津良和(Cactus)