第8回 Windows XP → 7移行のアプリケーション・トラブル解決法:Windows 7新時代(1/2 ページ)
Windows XPからWindows 7への移行で障害になるのがアプリケーションの互換性。互換性問題の主な原因と、その対策についてまとめる。
2009年9月1日(ボリューム・ライセンスによる提供開始。パッケージの販売は10月22日)にWindows 7が発売されてから、早くも半年が過ぎた。動作がWindows Vistaに比べて軽快になったなどの点が評価されて、市場の反応も良いようだ。システム要件が高度化したなどの理由からWindows Vistaを見送っていたユーザーの中にも、Windows 7への移行を検討している人も少なくないだろう。
Windows Vistaへの移行をスキップしてWindows XPを使い続けているユーザーの場合、ハードウェアの更新も見送っていた場合が少なくないはずだ。すると、Windows XPのサポート(メインストリーム・フェーズはすでに終了しており、2014年4月8日には延長サポート・フェーズも終了する。「マイクロソフト プロダクト サポート ライフサイクル」参照)に対する不安だけでなく、使用しているハードウェアの陳腐化・老朽化という問題もある。このことも、Windows XPからWindows 7への移行を後押しする要因になる。
問題は、OSのバージョンアップに際して、それまで使用していた周辺機器やアプリケーション・ソフトウェアを継続利用できるかどうかだろう。アンチウイルス・ソフトウェアのように、OSのバージョンアップに合わせて新バージョンに切り替えるというコンセンサスがある分野の製品はともかく、そのほかのアプリケーション・ソフトウェア、あるいは独自に開発した業務用のソフトウェアについては、Windows 7に移行してもそのまま使い続けたいと考えるのは、ユーザーとしては当然の反応といえる。
Windows Vistaをスキップしたユーザーが少なくなかった理由に、この互換性に関する不安がよく挙げられている。ところがWindows 7は、そのWindows Vistaをベースにしていることから、(Windows Vistaよりも互換性向上のための努力が払われているとはいえ)互換性に関する問題が生じる可能性を完全には否定できない。
そこで、本稿ではWindows XPからWindows 7への移行を検討している管理者を対象に、互換性問題の原因となり得る代表的なポイントを踏まえ、Windows 7上で発生する可能性のあるアプリケーション互換性の問題の対策についてまとめる。なお、本稿ではアプリケーション・ソフトウェアに的を絞っており、デバイス・ドライバは対象外としている。
互換性問題の原因とそれに起因する現象
「Windows Vistaでは互換性が……」と口にする人は多いが、具体的に、どういったところが原因で互換性問題につながるかについての認識が広まるには、時間がかかったようだ。そこで、Windows XPとWindows Vista、Windows 7で存在する相違点を念頭に置きながら、どういったところでアプリケーション・ソフトウェアの互換性問題が発生するかについて、かいつまんで解説していこう。
■ケース1:OSのバージョン・チェックを行っている
ソフトウェアによっては、動作するWindows OSのバージョンをチェックして、指定したバージョン以外では動作しないようにしている場合がある。動作保証の対象になっているWindows OSのみで動作するようにすることで、(将来予想される、次のケース2のような)APIの互換性問題や、ユーザー・サポートの負担を軽減するなどの理由による。特にシステムの基幹部分の構成やアーキテクチャに大きく依存する度合いの高い、システム系のユーティリティなどでは、このバージョン・チェックを行っている傾向が強い。想定されていない環境で利用されると、システムに何らかのダメージを与えてしまったり、誤動作したりする可能性が高いからだ。
Windows OSのバージョンは、バージョン番号に関する情報を取得することで確認できる(このバージョン情報は、コマンド・プロンプトを開くと最初に表示されるし、Verコマンドでも表示される)。Windows 2000なら「5.00.xxxx」、Windows XPなら「5.1.xxxx」、Windows Vistaなら「6.0.xxxx」、Windows 7なら「6.1.xxxx」といった具合だ。つまり、メジャー・バージョンとマイナー・バージョンの数字を取得することで、バージョン・チェックを行えることになる。
だから、例えば「メジャー・バージョンの数字が5.0より大きい場合には、エラー・メッセージを表示するだけで動作しない」という処理を組み込むことで、Windows 2000/XPないしは、それ以前のバージョンでのみ動作するようにできるわけだ。アプリケーション・ソフトウェア本体だけでなく、セットアップの段階でバージョン・チェックを行っている場合もある。
以下の画面例は、筆者がWindows XP時代に購入したパスワード保護機能付きUSBメモリをWindows 7が動作するコンピュータに取り付けた際に表示するエラー・メッセージだ。
バージョン・チェックを行っているために動作しないソフトウェアの例
開発の際に想定したバージョンのWindows OS以外では動作しないように、バージョン・チェックを行っているソフトウェアがある。その場合、開発時に想定したものより新しいバージョンのWindows OSで動作させようとすると、このようなエラー・メッセージが表示される場合がある。
■ケース2:APIの互換性問題
API(Application Programming Interface)とは、アプリケーション・ソフトウェアがOSの機能を呼び出すために使用する、一種の「窓口」のようなものだ。例えば、32bit版Windows OSでは「Win32」と呼ばれるAPIのセットがあるが、これもWindows OSのバージョンアップに伴い、内容が変化してきている。Windows OSが新しい機能を追加すれば、それをアプリケーション・ソフトウェアから利用するためにAPIが必要になるからだ。
基本的にAPIは上位互換であり、バージョンアップに伴ってAPIが減少することは多くない。しかし時には、特定のバージョンにのみ存在するAPI、あるいはそれを利用するアプリケーション・ソフトウェアが出現する可能性がある。また、特定の機能分野に関するAPIの内容が、Windows OSのバージョンによって異なる可能性も考えられる。
もしも存在しないAPIを呼び出そうとした場合、アプリケーション・ソフトウェアがエラーを生じたり、 特定の機能が利用できなかったり、といった問題が生じる可能性が高い。
■ケース3:Program Filesフォルダ以下のアクセス権問題
個人的には、Windows Vista以降で発生する互換性問題の多くが、これに起因すると考えている。
Windows Vistaにおける大きな仕様変更点の1つに、管理者ユーザーの扱いがある。Windows XPであれば、「管理者」に分類されるユーザー・アカウントでログオンすると、常に管理者の資格情報を維持した状態になる。しかし、Windows VistaやWindows 7では事情が異なり、「管理者」に分類されるユーザー・アカウントでログオンしても、通常は標準ユーザーと同じ権限しか持たない。そして、管理者の資格情報がないと使用できない機能を利用するときに限り、管理者に昇格するようになっている。その際にユーザー・アカウント制御(UAC : User Account Control)が許可ダイアログを表示する仕組みだ。
「Program Files」フォルダに対するアクセス権の強化
Windows Vista/7では、「Program Files」フォルダに書き込みを行う際には管理者の資格情報を必要とする。しかし、通常は標準ユーザーの資格情報しかない状態で動作しているため、そのままでは書き込みを行えない。画面の例は「Program Files」フォルダにファイルをコピーしようとしたときのものだが、そこで[続行]ボタン((1))をクリックすると管理者への昇格が行われて、その時点で初めてコピーが可能になる。
ユーザー・アカウント制御(UAC)の許可ダイアログが表示されたときの画面例
Windows Vista/7では、「管理者」に分類されるユーザー・アカウントでログオンしても、通常は標準ユーザーと同じ権限しか持たない。管理者の資格情報が必要な機能を実行したときに限り、管理者に昇格する仕組みだ。Windows Vistaでは昇格の際に必ず許可ダイアログを表示する既定値になっていたが、Windows 7の既定値では許可ダイアログを表示する場面を減らしている。
(1)[はい]ボタンをクリックすると、昇格が実現する。
(2)[いいえ]ボタンをクリックすると昇格が行われないため、管理者の資格情報を必要とする機能は利用できない。
従って、常に管理者の資格で動作していることを前提とした設計になっているソフトウェアは、Windows Vista/7では正常に動作できない可能性がある。
そして、もう1つの変更点が、「Program Files」フォルダ以下のアクセス権だ。不正プログラムをひそかに送り込む事態を避けるため、「Program Files」フォルダ以下のフォルダに書き込みを行う際には管理者の資格情報を必要とするようになっている。
ということは、標準ユーザーの資格情報で実行したアプリケーション・ソフトウェアは、そのままでは「Program Files」フォルダ以下への書き込みを行えないことになる。すると、「Program Files」フォルダのサブフォルダに置かれた実行ファイルと同じフォルダ、あるいはその下のサブフォルダに設定ファイルを置いたり、データを書き込んだりするアプリケーション・ソフトウェアは、正常に動作できない可能性が高い。
実際に、この問題についてWindows VistaとWindows 7で比較してみると、Windows 7は問題が緩和されて、正常に機能するソフトウェアが増えているように感じられる。ただし、それでもアクセス権の制約が存在しているのは確かなので、Windows XPと同様というわけにはいかないようだ。
例えば、ZIP形式のアーカイブから実行ファイル/ヘルプ・ファイル/DLLなどを取り出して、フォルダにコピーするだけでインストール完了になるフリーソフトウェアは少なくない。そうしたソフトウェアの中には、初回起動時に、実行ファイルと同じフォルダ、あるいはその下のサブフォルダに設定ファイルを作成したり、データ・ファイルを配置するためのサブフォルダを作成したりする場合がある。
この場合、アクセス権に関するエラーが発生したり、(設定ファイルを書き込めないために)常に初期設定画面が表示されたり、といった不具合が発生する可能性がある。あるフリーソフトウェアで試したところ、設定ファイル(*.ini)は作成できたが、データ・ファイル(*.dat)は保存できないというトラブルがあった。
■ケース4:インストーラが16bitアプリケーション
これは、64bit版Windows 7で問題になる可能性があるトラブルだ。
従来のWin32対応アプリケーションを実行可能にするため、64bit版のWindows XP/Vista/7ではWOW64(Windows-On-Windows 64)という仕組みを備えており、Win32 APIに対応したアプリケーション・ソフトウェアでも実行できるようになっている。
ところが、アプリケーション・ソフトウェア自体がWin32 APIに対応した32bit版でも、セットアップ・プログラムが16bit版ということがある。64bit版Windows OSでは16bit版のソフトウェアを動作させる仕組みが用意されていないので、結果としてセットアップが不可能、アプリケーション・ソフトウェアの実行も不可能ということになる。
x64版Windows 7で16bit版のプログラムを実行しようとすると発生するエラー
16bit版のセットアップ・プログラムをWindows 7(x64版)で動作させた際、このようなエラー・メッセージが表示され、プログラムは実行できない。Windows 7(x64版)は、32bit版のアプリケーションを動作させる仕組みは備えているが、16bit版のアプリケーションを動作させる仕組みは備えていないためだ。
■ケース5:画面表示の仕様変更に起因する問題
Windows Vistaから画面描画の方式が変わり、デスクトップを3Dグラフィックス機能で合成する「デスクトップ・コンポジション」が導入されている。このことが、アプリケーション・ソフトウェアの動作に影響する可能性も考えられる。その場合、起動はできても、画面表示が正常に行われない可能性がある。
次ページからは、これら互換性の問題を解決する方法について解説していく。
Copyright© Digital Advantage Corp. All Rights Reserved.