Windows Vistaではセキュリティ強化を中心に大幅な仕様変更があり,多くの「作りの悪いソフト」が動かなくなる可能性がある。その数はWindows XP Service Pack 2よりも多くなるだろう。マイクロソフトは2006年2月2日,ソフトウエア開発者会議「Microsoft Developers Conference(MDC) 2006」で,「日本語版Windows Vista:アプリケーション開発のコツ」というセッションを設けて,アプリケーションの挙動に大きな影響を与える重要な仕様変更点を説明した。
マイクロソフトプロダクトディベロップメントリミテッドの林真二氏は,「Windowsのバージョンアップによって発生する互換性の問題には,『一般的な互換性問題』と『新機能や機能変更に伴う互換性問題』の2種類がある」と解説する。
一般的な互換性問題とは,「OSのバージョンをチェックするプロセスが,新しいバージョンに対応できない」といった,アプリケーション側の実装方法が原因となる互換性問題である。こちらの問題は,Windows XPに「互換モード」が搭載されたことによって,かなり解決している。Windows Vistaでもそう問題にはならないだろう。
ただし,「ファイルやフォルダのパスの取得」に関する互換性問題は,一般的な互換性問題に分類されるものであるが,Windows Vistaではやや問題が深刻になるであろう。というのも,Windows Vistaではフォルダ構造がかなり変化するからである(表1と表2)。
それでも,Windows Vistaにおいてより重要なのは,「新機能や機能変更に伴う互換性問題」である。Vistaで互換性に影響を与える新機能とは,「ユーザー・アカウント・コントロール(UAC)」「Internet Explorer 7保護モード」「Windowsリソース保護(WRP)」「セッション0の隔離」「MSゴシック/MS明朝 ver.3.0」「メイリオ」---だという。
ユーザー・アカウント・プロテクションがデフォルトで有効
UACは,以前の評価版で「ユーザー・アカウント・プロテクション(UAP)」と呼ばれていた機能だ。管理者権限を持つ(Administratorグループに所属する)ユーザー・アカウントでログオンしても,ユーザー権限が強制的に制限ユーザー(Usersグループに所属するユーザー,Vistaでは「スタンダード・ユーザー」に名称が変更される)と同等になる機能である。Vistaではこれが標準で有効になる。もしユーザーが管理者権限が必要な操作を実行する場合は,権限を昇格させるダイアログ・ボックスが出てくる(写真1)。ユーザーはここで,再度パスワードを入力すると,管理者権限を一時的に使えるようになる。
もし,動作させるのに管理者権限を必要とするアプリケーションを,Vista上で動かそうとすると,「アクセス拒否のエラーが表示され操作に失敗する」「何も起こらず操作に失敗する」「『管理者権限が必要』というエラーが表示され,操作を続行できない」といったエラーが起きる場合がある。互換性を最小限にとどめるために,Vistaには「ファイルとレジストリの仮想化」という機能があり,「%PrograFiles%や%WinDir%,%SystemRoot%,レジストリのHKLM(HKEY_LOCAL_MACHINE)」といった書き込み制限のある領域に対するアプリケーションの書き込みを,「%LocalAppData%」や「レジストリのHKCU(HKEY_CURRENT_USER)」といったユーザーに書き込み権限がある領域にリダイレクトする機能がある。それでも,「リダイレクトは一時的な回避策に過ぎないので,こういった回避策に依存しないことが重要」と林氏は注意を呼びかける。
Win32アプリケーションでもマニフェストを利用可能
UACに対応するためには,制限ユーザー(スタンダード・ユーザー)で動作するようアプリケーションを作成する必要がある。また,インストールに管理者権限が必要なアプリケーションは,MSI 3.1以降に対応したインストーラを使用すべきであるという。また,「アプリケーション・マニフェスト」によって,そのアプリケーションが管理者権限を使うと宣言しておく必要がある。なお,「アプリケーション・マニフェスト」は.NET Frameworkの機能である。既存のWin32アプリケーションの場合,「Win32アプリケーションの実行ファイルがあるフォルダに『実行ファイルのプログラム名.manifest』というXMLファイル(内容はアプリケーション・マニフェストのコードと同じ)を置いておく必要がある」(林氏)という。
Internet Explorer 7はよりセキュアに
UACの機能は,Internet Explorer 7でも有効になる。ActiveXコントロールのインストールといった管理者権限が必要な作業は,UACと連携してデフォルトでブロックされる(写真2)。Internet Explorer 7のアイコンを右クリックして「管理者特権で実行」を選択するなどして,保護モードを一時的に解除することも可能だが,林氏は「管理者権限が必要ないWebサイトやアドオンをデザインする必要がある」と呼びかけている。
システム・ファイルは基本的に削除不可能
「Windowsリソース保護(WRP)」とは,システム・ファイルなどをユーザーが勝手に削除できないようにする機能である。Vistaではシステム・ファイルのオーナーが「Trusted Installersグループ」に設定されている。そのため,Administratorグループのユーザーであっても,さらにはSystemアカウントであっても,Trusted Installersグループが保有するファイルを削除できない。従来のWindowsファイル・プロテクションは,削除されたシステム・ファイルが自動的に復活するという機能だったが,WRPでは削除自体ができなくなる。システム・ファイルを改変するようなアプリケーションは,まず正常には動作しないだろう。
サービスとユーザー・アプリケーションが分離
「セッション0の隔離」は,やや分かりにくい機能だ。Vistaでは1つのユーザー・アカウントが,基本的に2つ以上のセッション(サービスやアプリケーションを動作させる空間)を利用している。例えば,ログオンした時に与えられるセッション(セッション0)と,アプリケーションを動作させるときに使用するセッション(セッション1以降)の2つのセッションである。Windows XPの場合,マルチ・ユーザー環境(「ユーザーの簡易切り替え」を使っている状態やサーバーへの同時ログオン)でなければ,2つ以上のセッションが1つのOS上で同時に走ることはなかった。
Vistaでは,システム・プロセスとサービスはセッション0でのみ動作する。ユーザー・アプリケーションが動作するのは,セッション1以降のセッションだけだ。セッション0はアプリケーションから隔離されており,権限の昇格を狙った悪意のあるプログラムから,サービスが保護される。その一方で,ユーザー・アプリケーションがセッション0で動作していることが前提になっているサービスは,Vistaでは正常に動かない可能性がある。
例えば,ユーザー・インターフェースを持っているサービスや,ウインドウ・メッセージを送信してアプリケーションと通信しているサービス,解像度を取得しているサービスなどで問題が生じる可能性がある。また,ローカル・オブジェクトでサービスと同期をとるアプリケーションも,サービスと同期をとれなくなる。
MSゴシックとMS明朝はJIS2004に対応
Vistaに搭載されるMSゴシックとMS明朝の「ver.3.0」は,JIS2004対応である。そのため,字形の一部が従来と変更される。またVistaにはClearTypeに最適化した新フォント「メイリオ」が搭載される(写真3)。メイリオは,欧文文字はプロポーショナルだが,日本語文字は固定幅である。メイリオを使ってユーザー・インターフェースを作成する場合は,注意が必要だ。
そのほかVistaでは,カーネル・モード・プリンタ・ドライバや,OSコンポーネント用のヘルプ・ファイル形式(拡張子がchmのHTML Help 1.xと,拡張子が.hlpであるWinHlp32ファイル)が廃止された。Windowsファイアウオールが外向きの通信(アウトバウンド)も制御するようになるという変更も予定されている。林氏はこれらに備えるために「なるべく多くの開発者に,Vistaの技術評価プログラムに参加してほしい」と呼びかけている。