米Microsoftが公開している資料によると、Windows 8では一部の互換性が破棄される可能性が示唆されている。本記事では、特にアプリケーションにフォーカスして、Windows 8では何が起こるのかを解説する。
米Microsoftは基本的に、Windowsの下位互換性をできる限り維持しようとしている。しかし時には、16ビットアプリケーションの互換性維持を撤廃するなど、大混乱を伴う変更が施されることもある。
Windows 8(コードネーム)ではクライアント版にもサーバ版にも、現在のアプリケーションとの互換性を脅かしかねない変更が幾つかある。しかもその中には、管理者レベルで適切に処理することは不可能で、影響を受けるアプリケーションの開発者による対応が必要になるものもある。
Windows 8の変更点の大半は、「WindowsおよびWindows Server Developer Preview互換性ガイドブック」に説明がある。この文書には、アプリケーションの互換性に関して、現行のWindowsが抱える主な問題の説明が解決策や対応策と併せて記載されている。
ここでは、注意が必要な、最も重要なアプリケーションの互換性の問題を幾つか紹介する。
この古くからある頭痛の種は、やや形を変えて復活している。既存のアプリケーションが特定のバージョンのWindowsを要件としている場合、問題になる可能性がある(Windows 8は自身のバージョン番号として6.2を渡す)。このようなアプリケーションは、Windowsが渡すバージョン番号を無視できる既存の機能(アプリケーションのプロパティの「互換性」タブなど)を使用することでインストールできる。それでも、アプリケーション開発者は、開発するアプリケーションでのバージョン番号のチェック方法に十分気を付けた方がよいだろう。Microsoftは、VerifyVersionInfo関数を賢明に使う(特定のバージョン番号に“等しい”のではなく“より大きい”)ように勧めている。
これは、さらに重要な変更の1つだ。Windows Serverの最近のバージョン(主に、Server Core)は、他のコンピュータから管理できる(ヘッドレス)だけでなく、完全にGUIなしで実行できるようになっている。リソースの少ない環境で運用する場合や、サーバの攻撃対象領域を縮小したい場合は、GUIをアンインストールできる。
ただし、サーバアプリケーションの中には、GUIなしのOSでは実行できないものもある。コマンドライン版のアプリケーションなら問題はないが、エンドユーザーにGUIを表示するアプリケーションは、全く機能しない可能性がある。なお、本稿執筆時点では、GUIアプリケーションを“ラップ”して、GUIなしでも正常に動作できるようにする手段はない。
Server Coreでアプリケーションを実行する場合は、GUIなしでも期待通りに動作するかどうかテストすることをお勧めする。アプリケーションが期待通りに動作しない場合、アプリケーションを書き換えることができるのであれば、Server Coreに既存のコードを移植するための文書(英文)に目を通し、Server CoreでサポートされるWin32 APIと.NET CLRの関数を確認する必要があるだろう。
Windows 8の基本インストールには、.NET Framework 4.5が含まれているが、3.5は含まれていない。バージョン3.5が要件のアプリケーションやWebサイトがある場合は、手動で3.5を追加する必要がある。幸い、.NET Frameworkは全てのバージョンを併用できるため、これが大きな互換性の問題につながることはない。「互換性ガイドブック」には、Windows Updateからのダウンロードを自動的に要求する機能を使わずに、.NET Framework 3.5を追加する方法について、簡単な説明がある。
バージョン4.5は、実際にはWindowsランタイム(WinRT)APIの一部であると考えられている。WinRTを使うと、例えば、(サーバでは重要性が低いが)新しいMetroスタイルのアプリケーションを開発したり、サンドボックスを実装するプログラミングモデルを使って、Microsoftの「Windows Store」で公開するプログラムを短時間で作成したりできる。Windows 8用アプリケーションの開発またはWindows 8へのアップグレードを検討している場合、既にC#またはC++の知識があれば、WinRTをすぐに使いこなせるだろう。
これは、アプリケーションではなく、むしろハードウェアの問題のように思われるかもしれないが、ここで取り上げる価値はある。サーバ市場向けの最近のディスクは、512バイトではなく4096(4K)バイトのセクタを採用している。この4Kセクタのドライブは「Advanced Format」ドライブと呼ばれる。4Kドライブの多くは、下位互換性を確保するために、512バイトセクタをエミュレートする拡張仕様(“512e”)になっているが、512バイトのセクタを想定しているアプリケーションに不具合が起きる可能性がある。Windows 8では、この問題を回避するために、ファイルのセクタサイズを照会する新しいAPIが導入されている。また、fsutilコマンドラインツールが、スクリプト内でボリュームサイズを照会できるように変更されている。
Windows Serverは、マルウェアの進入経路としてカーネルモードドライバの使用を特に厳しく制限してきている。従って、サードパーティー製であれ自社開発アプリケーションであれ、カーネルモードドライバを使用するアプリケーションがある場合は注意が必要だ。最も影響があるのは、OSの起動前の環境に混入するマルウェアからコンピュータを保護するUnified Extensible Firmware Interface(UEFI)セキュアブート機能が有効な機器で、カーネルモードドライバを使う場合だ。UEFIセキュアブートは、サーバではオプションの機能だが、使用が推奨されている(関連記事:IT管理者が知っておくべきWindows 8のブート、仮想化、管理機能)。
サーバでUEFIセキュアブートを有効にするのであれば、信頼されている認証機関による署名をカーネルモードドライバに付けることをお勧めする。署名なしのドライバを使う場合は、セキュアブート機能を無効にするしかない。
スマホ時間の奪い合い「利用者増えても、利用時間は減少」 唯一の勝者は?
データマーケティング支援のGlossomは、「スマートフォンでのメディアとコマースの利用に...
生成AI時代のコンテンツ制作の課題 アドビが考える解決法は?
求められる顧客体験はますます高度になる一方で、マーケターのリソースは逼迫している。...
「イカゲーム」とコラボ ジョニーウォーカーが黒ラベルを“緑”に もしかして、これって……?
世界的な大ヒットとなったNetflixオリジナルドラマ「イカゲーム」のシーズン2公開が近づ...