Microsoft Corporation
バージョン 6.6.jpn.1
注 このドキュメントに記載されている情報は、将来予告なしに変更することがあります。
目次
はじめに
簡単な互換性チェック
オペレーティング システムのバージョニング
ユーザー アカウント制御
UAC - アプリケーション更新ガイドライン
UAC - COM のユーザー単位の構成
Windows リソース保護 (WRP)
Internet Explorer の保護モード
Windows 64 ビット
IIS 7
Microsoft GINA (Graphical Identification and Authentication)
セッション 0 の分離
ネットワーキング: TCP/IP スタックおよび Windows Filtering Platform
ネットワーキング: カーネル モード IP ヘルパー API
ネットワーキング: IPv6
互換性のリスク
Windows ディスプレイ ドライバ モデル
既定のプログラム
プログラム互換性アシスタント (PCA)
グラフィカル デバイス インターフェイス - GDI
ユーザー インターフェイス特権の分離 (UIPI)
高 dpi スケーリング
PNG アイコン
名前付きパイプの強化
SPAP の非推奨化 (Pstore)
WMI プロバイダ: 既定のセキュリティ ホスティング モデル
ボリューム シャドウ コピー サービス
Standard User Analyzer
DHTML 編集コントロール
ヘルプ エンジン サポート
接合点およびバックアップ アプリケーション
バックアップと復旧のアプリケーションの互換性
インターネットの検索機能との統合
MMC が DEP (Data Execution Protection: データ実行防止機能) 対応である必要性
ネットワーキング: Windows ファイアウォールの無効化
Windows Server® 2008 に関連する問題
読み取りRead Only専用ドメイン コントローラ (RODC)
Windows Server® 2008 の役割
Windows Server® 2008 での Windows アプリケーションのエクスペリエンス
Windows Server® 2008 Server Core
Windows Server® 2008 の Windows Server フェールオーバー クラスタリング
ネットワーキング: Windows Server® 2008 で既定で有効の Windows ファイアウォール
はじめに
Windows Vista® および Windows Server® 2008 には、世界中のアプリケーション開発者や企業によって使用される、次世代オペレーティング システム テクノロジおよびソフトウェア開発プラットフォームが導入されています。Windows Vista® および Windows Server® 2008 のセキュリティおよびユーザー エクスペリエンスの拡張の一環として、新機能が多数導入され、既存の機能が改善されました。
Windows Vista® および Windows Server® 2008 は、Microsoft® Windows® XP、Microsoft Windows Server™ 2003、およびそれらの Service Pack 用に作成されたほとんどのアプリケーションと高い互換性を持っていますが、革新的な新機能、セキュリティの強化、信頼性の向上によって互換性が損なわれてしまう部分がないとは言えません。全体的に見ると Windows Vista® および Windows Server® 2008 の互換性は高く、マイクロソフトは、既存のアプリケーションを Windows Vista® および Windows Server® 2008 で使用するための最高の互換性を持つソリューションの実現に向けて常に努力しています。
このドキュメントは、アプリケーション開発者がアプリケーションの互換性の検証方法を理解するための第一歩となります。また、ここでは、Windows Vista® および Windows Server® 2008 におけるアプリケーションの非互換性に関する少数の既知の問題の概要について説明し、詳細なホワイト ペーパーなどの開発者向けのガイダンスへのリンクを記載しています。
アプリケーションが Windows Vista® および Windows Server® 2008 で正常に機能しない場合に開発者がトラブルシューティングや回避を行うには、いくつかの新機能があります。次の 2 つの機能が特に便利です :
- Windows XP SP2 互換モードでは、アプリケーションを Windows XP SP2 上で動作しているように動作させることができます。アプリケーションをこのモードで実行するには、アプリケーションの EXE またはアイコンを右クリックして [プロパティ] を開き、[互換性] タブをクリックし、[互換モードでこのプログラムを実行する] チェック ボックスにチェックを入れ、[Windows XP (Service Pack 2)] を選択します。
- ユーザー アカウント制御 (UAC) によるセキュリティ上の制限によって、管理者権限を必要とするアプリケーションが、たとえそのユーザーが Administrators グループのメンバであっても、正しく動作しなくなることがあります。この UAC の影響を受けないようにするために、管理者権限を持っているユーザーであれば、次の方法でアプリケーションを権限を昇格して実行することが可能です。アプリケーションの EXE またはアイコンを右クリックし、コンテキスト メニューから [管理者として実行] をクリックします。UAC のダイアログが表示されたら [許可] をクリックし、適切な権限でアプリケーションを実行します。
注 このドキュメントに記載されているすべての項目は、特に断りのない限り、Windows Vista® および Windows Server® 2008 の両方に適用されます。Windows Vista SP1 ではアーキテクチャの変更はありません。Windows Vista RTM と互換性のあるアプリケーションは、Windows Vista SP1 とも互換性があります。
簡単な互換性チェック
ここでは、Windows Vista® または Windows Server® 2008 でアプリケーションの互換性をテストし、評価する方法に関するガイダンスを提供します。Windows Vista® および Windows Server® 2008 で互換性をテストする場合、次のような 2 つの主要なシナリオがあります。
Windows Vista のクリーン インストール時にテストする場合
- テスト用のコンピュータに Windows Vista® または Windows Server® 2008 をインストールします。
- テスト用のコンピュータにアプリケーションをインストールします。アプリケーションのインストール許可を求めるプロンプトが表示されたら、[許可] をクリックして次に進みます。正常にインストールできたら、手順 6 に進みます。
- アプリケーションのインストールが失敗し、インストール許可のプロンプトが表示されなかった場合は、インストーラの EXE を右クリックし、[管理者として実行] を選択して、アプリケーションを再インストールします。インストールが正常に完了したら、手順 6 に進みます。
注 MSI でインストールする場合、この手順は不要です。
- OS バーション、CLSID の登録、ファイルのコピーなどのエラーが発生した場合は、インストーラの EXE を右クリックし、[互換性] タブをクリックして、Windows XP SP2 互換モードを選択します。
- 手順 2 に戻ります。アプリケーションがインストールできなかった場合は、手順 9 に進みます。
- これでアプリケーションのインストールが完了しました。
- アプリケーションを起動します。アプリケーションが正常に起動しなかった場合やエラーが表示される場合は、Windows XP SP2 互換モードをアプリケーションの EXE に適用してから再試行します。
- アプリケーションが正常に起動したら、Windows XP のアプリケーションで通常行われるテストをすべて実施します。アプリケーションの機能を検証し、アプリケーションが正常に動作することを確認します。主要な機能テストのすべてに問題がなければ、手順 10 に進みます。
- アプリケーションがインストールできない、正常に起動しない、クラッシュする、エラーが発生する、主な機能テストに失敗するなどの問題がある場合、アプリケーションの一部が Windows Vista® の変更の影響を受けている可能性があります。このドキュメントのトピックでアプリケーションを確認してください。
- これでシナリオは終了です。
Windows XP Service Pack 2 から Windows Vista にアップグレードしたシステムで時にテストする場合
- テスト用のコンピュータに Windows XP SP2 をインストールし、アプリケーションをインストールします。処理を行う前に、アプリケーションのすべての機能を検証します。
- テスト用のコンピュータを Windows Vista にアップグレードします。Windows Vista のセットアップおよびアップグレードの手順に従います。アップグレードが完了したら、 Windows XP と同じ方法でログオンします。
- アプリケーションを起動します。アプリケーションが正常に起動しない場合、またはエラーが表示される場合、Windows XP SP2 互換モードをアプリケーションの EXE に適用してから再試行します。
- アプリケーションが正常に起動したら、Windows XP のアプリケーションで通常行われるテストをすべて実施します。アプリケーションの機能を検証し、アプリケーションが正常に動作することを確認します。主要な機能テストのすべてに問題がなければ、手順 6 に進みます。
- アプリケーションがインストールできない、正常に起動しない、クラッシュする、エラーが発生する、主な機能テストに失敗するなどの問題がある場合、アプリケーションの一部が Windows Vista® および Windows Server® 2008 の変更の影響を受けている可能性があります。このドキュメントのトピックでアプリケーションを確認してください。
- これでシナリオは終了です。
2 つのシナリオを実行し、アプリケーションが正常に動作すれば、アプリケーションは Windows Vista® および Windows Server® 2008 で正常に機能します。アプリケーションの証明書を取得する方法の詳細については、Windows Vista のホームページを参照してください。
その他のリソースへのリンク
オペレーティング システムのバージョニング
機能の影響
高
概要
Windows Vista® および Windows Server® 2008 の内部バージョンは 6 です。GetVersion 関数を使用したクエリでは、アプリケーションにこのバージョン番号を返します。
注 これは、Windows XP (Version 5.x) の次のメジャー バージョン番号です。
現象
このバージョン変更は、次のような、きわめてアプリケーションに固有の現象を示します。
OS のバージョンを厳密にチェックするアプリケーションでは、より高いバージョン番号を取得することになります。
アプリケーション インストーラがアプリケーションのインストールを中止する場合や、アプリケーション自体が起動を停止する場合があります。
アプリケーションがユーザーに警告を出して、引き続き正常に機能する場合があります。
アプリケーションによっては、不安定になったり、クラッシュしたりする可能性があります。
軽減策
Windows Vista® および Windows Server® 2008 のアプリケーション互換性は非常に高いため、ほとんどのアプリケーションが Windows Vista® および Windows Server® 2008 で正常に機能します。Windows Vista® および Windows Server® 2008 には、OS バーションをチェックするアプリケーションおよびインストーラ用に互換モードが用意されています。
ユーザーは、ショートカットか EXE を右クリックして、[互換性] タブで Windows XP SP2 互換モードを適用できます。これによって、ほとんどの場合、アプリケーションは Windows XP 上と同じように機能します。この場合、アプリケーションを変更する必要はありません。
対処策
通常は、OS バージョン チェックが実行されないようにするか、少なくともアプリケーションがバーション 6 以降の OS で常に実行できるようにします。非常に特殊な法律またはビジネス関係のコンポーネントやシステム コンポーネントでバージョン チェックが必要でない限り、この方針に従います。
64 ビットのシステム互換性を保証するために、16 ビットのアプリケーション インストーラは使用しません。
マルチ プラットフォーム (32 ビットと 64 ビット) の互換性を維持するために、アプリケーションで使用するドライバにはできる限りユーザー モード ドライバを使用してください。
ユーザー アカウント制御
標準ユーザーの変更
機能の影響
高
概要
Windows のセキュリティを高めるための根本的な方法は、インタラクティブ ユーザーが、限定的な許可や権限のセットにしかアクセスできない標準ユーザー アカウントで実行できるようにすることです。既定では、ユーザーが管理者グループのメンバーとしてログオンしていても、Windows Vista® および Windows Server® 2008 ではすべてのアプリケーションを標準ユーザーとして実行します。逆に、管理者の許可が必要とされているアプリケーションをユーザーが起動しようとすると、システムは明示的にユーザーの目的を確認しようとします。管理者権限で実行しているアプリケーションのみが、システムとグローバルの設定と動作を変更できます。この Windows Vista® および Windows Server® 2008 の機能が、ユーザー アカウント制御 (UAC) です。
現象
カスタム インストーラ、アンインストーラ、およびアップデータが検出されず、管理者として実行するために昇格できない場合があります。
標準ユーザー アプリケーションがタスクの実行に管理者権限を必要とする場合、アプリケーションに障害が発生するか、あるいは標準ユーザーがこのタスクを利用できないことがあります。
現在のユーザーが必要な許可を持っていない場合、タスクを実行しようとするアプリケーションに障害が発生することがあります。障害がどのように表れるかは、アプリケーションの作成方法によって異なります。
管理タスクやシステム全体に影響を及ぼす変更を行うコントロール パネル アプリケーションが、正常に機能せず、エラーが発生することがあります。
RunDLL32.EXE を使用して実行される DLL アプリケーションが、グローバル操作を実行する場合に正常に機能しないことがあります。
標準ユーザー アプリケーションがシステム全体の設定の保存場所に書き込みを行うと、仮想化によってユーザーごとの設定の保存場所にリダイレクトされます。
対処策
カスタム インストーラ用の解決策
システムの変更や、権限が設定された領域への書き込みに管理者権限が必要なアプリケーション用の簡単な解決方法
企業ユーザーは、アプリケーション互換性修正プログラムを適用し、レガシ アプリケーションを正常に実行するためには管理者の許可や管理者権限が必要であることを示すことができます。
一定の制限されたファイルについてアクセス制御リスト (ACL) の制限を軽減すると、アプリケーションがこれらのファイルへの書き込みを行いやすくなる場合があります。
仮想化フォルダやレジストリ キーをチェックして、アプリケーションが管理者権限を必要とするものにアクセスしているかどうか確認します。この情報を利用して、アプリケーションの将来のバージョンから、管理者によって保護された場所へのアクセス要求をなくすことができます。仮想化ファイルやフォルダ、場所の詳細については、「シェル: テーマとマイ ドキュメントの場所」を参照してください。
別の EXE に RunDll32.exe による DLL の呼び出しを含め、この EXE のマニフェストで、権限の昇格を要求します。
互換性テスト
すべてのインストール、アンインストール、更新のシナリオにおいて、ユーザーに同意または資格情報の入力を求めるようにします。ユーザーの同意が受理されると、操作が次に進みます。
エラーが発生したシナリオを組み込み管理者として再現します。このシナリオが成功した場合、エラーの原因は権限の不足によると考えられます。
アプリケーション互換性ツールキットの Compatibility Administrator の ユーザー アカウント制御予測ツール (User Account Control predictor tool) を使用して、管理者操作を行っているアプリケーションの領域を識別します。
Windows Vista® および Windows Server® 2008 に対応した解決策の活用
Windows Vista® および Windows Server® 2008 ベース アプリケーションでは、以下を実行する必要があります。
Windows Vista® および Windows Server® 2008 のロゴ プログラムにある所定のガイドラインおよびユーザー エクスペリエンス (UX) ガイドラインなどのドキュメントに従います (「リンク」セクションを参照)。
埋め込みマニフェストを使用して、特定の requestedExecutionLevel (以前は RunLevel) を示します。
管理機能と非管理機能をすべて別の EXE に分けます。より高い権限が必要なすべての機能は、実行レベルが明示された別の実行可能 EXE ファイルや管理者権限で実行される COM オブジェクト内に格納します。管理タスクは必要な場合にのみ起動します。これはすべてのアプリケーションに当てはまります。
特に管理機能を持たないアプリケーションの場合は、管理者の許可や管理者権限を必要としないようにコードを修正します。
管理者のみが使用するアプリケーションの場合は、アプリケーションが管理者の許可や管理者権限を使用して実行されるようにマークします。
アプリケーションを更新するときは、別のアップデータ EXE を使用してターゲット アプリケーションを更新します。
コントロール パネル アプリケーションは .cpl ファイルから .exe ファイルに置き換え、EXE 形式のコントロール パネル アプリケーションには、必要な実行レベルを指定したマニフェストを含めます。
昇格が必要な RunDLL32.EXE で実行する DLL は、マニフェストに示された昇格レベルで、実行可能な EXE に変更します。
可能な場合は、常に読み取り専用でファイルやレジストリ キーにアクセスします。読み取り/書き込みモードでのアクセスは必要な場合のみ使用し、操作が完了したら、許可を元の読み取り専用に戻します。
その他のリソースへのリンク
UAC - アプリケーション更新ガイドライン
機能の影響
中
概要
既存の多くのアプリケーションには、更新機能が組み込まれています。更新機能を組み込む目的は、ISV が提供できる最新のバイナリをクライアントが実行していることを保証することです。
アプリケーションの中には、更新機能を実行するときに、標準ユーザー以上の権限を必要とするものがあります。多くの場合、インストール中に保存されたコンピュータ単位のファイルを使用可能にする必要があります。インストール アプリケーションを実行するための UAC モデルのように、これらの処理を実行するために十分な権限を持っているのは、高い権限を持つ管理者承認モードでの管理者だけです。
Windows Vista® および Windows Server® 2008 の、経験則に基づくインストーラの検出機能は、多くのアプリケーションのアップデータを正しく検出し、更新が正常に完了するように、アップデータのプロセスの権限を適切に昇格します。ただし、次のようにアプリケーションの更新を正常に完了できない部分も少し残ります。
インストーラの検出機能で検出されないプロセス外のアップデータ。経験則に基づくインストーラの検出機能を通しては検出されないアップデータです。
多目的実行可能ファイルおよびプロセス内の更新。複数の処理を実行する負荷が過剰な実行可能ファイルです。たとえば、バイナリがメインのアプリケーションでもあり更新アプリケーションでもある場合や、多目的実行可能ファイルがアプリケーション内のスレッドとして実行される場合などです。
現象
対処策
インストーラの検出機能で検出されないプロセス外のアップデータ
これは、どの企業でも起こり得る問題で、結果として、管理者権限でのアプリケーションの実行を企業が要求する可能性があります。インストーラが検出しない別のプロセスを使用してアプリケーションが自分で更新を行う場合、App Fix を使用して、この別のプロセスを管理者権限が必要であるものとして設定します。
ユーザーとして機能しないアップデータの場合、企業は最小特権では実行できません。
アップデータは、管理者権限を必要とするという希望の実行レベルを持つ別のプロセスとして記述します。
このプロセスは、更新のために必要な場合にのみ実行します。
ユーザーとしてプログラムの更新が必要かどうかをチェックします。
多目的実行可能ファイルおよびプロセス内の更新
Windows Vista® および Windows Server® 2008 では、実行可能ファイルが実行される状態を切り替えられないため、更新を行う多目的実行可能ファイルを作成する良い方法はありません。したがって、実行可能ファイルは常に管理者として実行する必要があります。あるいは、アプリケーションから以下のいずれかの方法で更新を行います。
- MSI のパッチ技術の利用 (Windows Installer、InsallShield、Wise for Windows Installer などの最新バージョンでサポート)
- MSI は、更新の管理機能を提供する重要なインストーラ技術です。
- MSI を使用して初期インストーラを作成し、MsiPatchCertificate テーブルに証明書を埋め込みます。
- アプリケーションの更新を作成し、先ほど指定した証明書を使用して署名します。
- MSI は、パッチを適用するときにアプリケーションを昇格します。
- この方法の主な利点は、標準ユーザーで実行可能であり、システムの安全な状態を保持できることです。標準ユーザー アカウントから管理者へのパッチのインストールの依頼や、アプリケーションを実行するための永続的な管理者権限の要求を行う必要がなくなるため、より快適なユーザー エクスペリエンスが実現されます。
- その他のカスタム インストーラ メカニズムの使用
- ユーザーが管理者以外としては実行できなくなるため、エンタープライズ環境ではお勧めしません。
- アップデータは、requiresAdministrator という希望の実行レベルを持つ別のプロセスとして記述する必要があります。
- このプロセスは、更新のために必要な場合にのみ実行します。ユーザーとしてプログラムの更新が必要かどうかをチェックします。
- "標準ユーザー" アプリケーションとして実行中の更新
- ClickOnce 技術を使用すると、標準ユーザーとして更新できます。ここでも、ユーザーが内部でアプリケーションを展開することを可能にし、アプリケーション書き込みプログラムの更新を処理するのは、インストール プラットフォームです。
その他のリソースへのリンク
UAC - COM のユーザー単位の構成
機能の影響
中
概要
Component Object Model (COM) は、レジストリを利用してコンピュータにインストールされているすべての COM オブジェクトに関する情報を保持します。このレジストリ ハイブ (HKEY_CLASSES_ROOT) は仮想レジストリ ハイブであり、ユーザー単位およびコンピュータ単位のオブジェクトの登録が可能です。ユーザー単位の COM オブジェクトの構成は HKEY_CURRENT_USER\Software\Classes に格納され、コンピュータ単位の構成は HKEY_LOCAL_MACHINE\Software\Classes に格納されます。通常、ユーザー単位の COM 構成が優先されます。
Windows Vista® および Windows Server® 2008 以降は、プロセスの整合性レベルが中以上の場合、COM ランタイムはユーザー単位の COM 構成を無視し、コンピュータ単位の COM 構成にのみアクセスします。これにより、標準ユーザーの権限を持つプロセスが任意のコードで COM オブジェクトを構成することが防止され、昇格されたプロセスからこのコードが呼び出されるので、特権の昇格による攻撃の対象が小さくなります。
現象
昇格して実行されるアプリケーション (requireAdministrator とマニフェストに示されている場合またはユーザーが右クリックして [管理者として実行] をクリックする場合)、および UAC が無効になっている Administrators グループのメンバであるアカウントから実行されるアプリケーションは、ユーザー単位で構成されているどの COM オブジェクトにもアクセスできません。
対処策
管理者の権限を必要とするアプリケーションでは、インストール時にすべての依存 COM オブジェクトをコンピュータ単位の COM 構成ストア (HKEY_LOCAL_MACHINE\Software\Classes) に登録するようにします。
その他のリソースへのリンク
Windows リソース保護 (WRP)
機能の影響
高 (アプリケーションのインストールや実行をブロック)
概要
Windows リソース保護 (WRP) は、システムの安定性、予測可能性、および信頼性を向上させるための主要な機能であり、特定の OS ファイル、フォルダ、およびレジストリ キーといった、仕様により構成不可能な Windows の読み取り専用リソースを保護します。保護されるリソースの詳細については、「Protected Resource List (英語)」を参照してください。
WRP は、リソースに特別なセキュリティ記述子を指定し、Windows セキュリティによってこの保護を実施します。管理者またはシステムとして実行するプロセスを含むあらゆるプロセスには、WRP リソースを変更する権限がなく、読み取りと実行のみが可能です。WRP リソースへのフル アクセスは、Windows モジュール インストーラ サービスに限定されています。
結果として、読み取り専用システムの状態は、アプリケーションのインストールや管理者の修正による意図しない影響から保護されます。これにより、システムの安定性が向上します。
現象
アプリケーションが、保護されている OS リソースの置換や変更に失敗 (通常、アプリケーションのインストールおよびアンインストール時に発生) し、以下のような結果が生じます。
WRP によって保護された OS のファイルやレジストリ キーの置換、変更、または削除を行うと、エラーが発生し、リソースを更新できなかったことを示すエラー メッセージが表示されます。このエラーはリソースへのアクセスが拒否されたために発生します。
保護されたレジストリ キーに新しいレジストリ キーや値の書き込みを行うと、アクセスが拒否されてエラーが発生し、変更が失敗したことを示すエラー メッセージが表示されます。
保護されたリソースへの書き込みにおいて、保護されたレジストリ キーやレジストリの値への書き込みをアプリケーションが正常に完了することを前提としている場合、書き込みを試行するとエラーが発生します。
アプリケーションは WRP リソースを変更することができず、関連エラーが抑制されるため、ランタイム エラーが発生します。
軽減策
注 アプリケーションが UAC に必要な requestedExecutionLevel (英語) を指定するマニフェストを持つ場合は、以下の軽減策は当てはまりません。
既知のインストーラ (英語) では、WRP リソースの作成、修正、または削除を行う場合に発生するアクセス拒否エラーは抑制され、変更は WRP リソースに適用されません。
対処策
Windows Vista® および Windows Server® 2008 のシステム状態 (ファイルとレジストリ) をインストールまたは更新する場合は、必ず Windows Vista® および Windows Server® 2008 用に設計されたマイクロソフト提供の再配付可能なパッケージを使用してください。
Windows Vista® および Windows Server® 2008 用に設計されたマイクロソフト提供の再配布可能なパッケージのコンポーネントを個別にインストールしないでください。
SfcIsFileProtected API を使用して、WRP で保護されているファイルを検出します。ファイルが WRP によって保護されている場合、アプリケーションによるファイルのインストールや変更は行われません。
WRP によって保護されるレジストリ キーの場合、アプリケーションは WRP によって発生する "アクセス拒否" のメッセージを手順に従って処理する必要があります。
WRP の軽減策に依存するレガシ アプリケーションが、アプリケーションをインストールすることによって正常に動作することをテストして確認します。
SfcIsKeyProtected API を使用して、WRP で保護されているキーを検出します。キーが WRP によって保護されている場合、アプリケーションによるキーのインストールや変更は行われません。
WRP で保護されるキー
アプリケーションが WRP で保護されるキーの作成、修正、削除を行うと、そのアプリケーションには "アクセス拒否" エラーが通知されることが予想されます。"アクセス拒否" エラーが発生した場合、そのエラーはユーザーが対象キーへの適切な書き込み権限を所持していないためではなく、キー (または親キー) に対する WRP のセキュリティ記述子のために発生したことを確認します。
WRP によって発生した "アクセス拒否" エラー メッセージへの対処方法は、このエラーがアプリケーションに与える影響によって異なります。
アプリケーションが既に存在するキーや値への書き込みを行った場合、アプリケーションはエラー メッセージを無視することができます。
キーや値が存在しない場合は、開発者としてアプリケーションへの影響を判断する必要があります。このキーが Windows Vista でアプリケーションを正常に実行するために必要かどうかを考えます。必要でない場合は、エラーを無視することができます。このキーが必要である場合は、アプリケーションを再設計して代替キーに書き込むか、または別の設計を使用する必要があります。
リソースが WRP で保護されているかどうかを識別する方法
レジストリの場合:
- コードから、SfcIsKeyProtected API を使用します。
- あるいは、regedit を使用してキーのアクセス許可を確認します。
- [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックします。
- 「regedit」と入力し、[OK] をクリックします。
- キーを検索します。レジストリ キーを右クリックします。[アクセス許可] をクリックします。
- WRP で保護されるキーであれば、Trusted Installer のアクセス許可はフル コントロールです。SYSTEM、Administrators、および Users には読み取り許可しか与えられていません。
ファイルの場合:
- コードから、SfcIsFileProtected API を使用します。
- または、エクスプローラを使用してファイルのアクセス許可を確認します。
- 確認するプロパティを持つファイルが格納されているフォルダを開きます。
- 確認するプロパティを持つファイルを右クリックし、[プロパティ] をクリックします。
- WRP で保護されるキーであれば、Trusted Installer のアクセス許可はフル コントロールです。SYSTEM、Administrators、および Users には読み取り許可しか与えられていません。
その他のリソースへのリンク
Internet Explorer の保護モード
機能の影響
高
概要
Windows Vista® および Windows Server® 2008 では、Microsoft® Internet Explorer 7 は保護モードで実行されます。Internet Explorer プロセスをかなり制限された権限で実行することによって、ユーザーを攻撃から保護することができます。保護モードでは、攻撃によるユーザーのコンピュータ上でのデータの書き込み、変更、または破壊や、悪意のあるコードのインストールの可能性を大幅に軽減できます。また、認証なしに自己インストールを行う悪性のコードからユーザーを保護できます。これは、Windows Vista® および Windows Server® 2008 をインストールしたときに、Internet Explorer の既定のモードとなります。
現象
保護モードは、新しい整合性メカニズムに基づいて構築されており、整合性レベルの高いプロセス、ファイル、レジストリ キーといったセキュリティ オブジェクトへの書き込みアクセスは禁止されます。
Internet Explorer は、保護モードで実行される場合、整合性の低いプロセスになります。したがって、ユーザーのプロファイルやシステム ロケーションにあるファイルおよびレジストリ キーへの書き込みアクセス権限を取得できません。
整合性の低いプロセスは、整合性の低い必須ラベルが割り当てられたフォルダ、ファイル、およびレジストリ キーにしか書き込みを実行できません。したがって、Internet Explorer とその拡張機能が保護モードで実行されると、整合性の低い新しいインターネット一時ファイル フォルダ、履歴フォルダ、Cookie フォルダ、お気に入りフォルダ、一時ファイル フォルダなど、下位整合性レベルのロケーションへの書き込みのみが可能になります。
さらに、Windows Vista® および Windows Server® 2008 の出荷時では、保護モード プロセスはデスクトップの整合性レベルが低い状態で実行されます。これによって、保護モードで特定のウィンドウ メッセージが整合性の高いプロセスに送信されることを防止しています。
保護モードでは、ユーザーが使用するシステムの機密領域への未承認のアクセスが行われるのを防ぐことで、問題のある Internet Explorer プロセスやマルウェアによって発生する可能性のある被害を制限することができます。たとえば、攻撃者はユーザーのスタートアップ フォルダに対して、キーストロークの記憶プログラムを通知なしにインストールできません。同様に、セキュリティに問題のあるプロセスがウィンドウ メッセージによって、デスクトップ上でアプリケーションを操作することはできません。
もちろん、この防御策により、正当な変更もより整合性の高いロケーション (IL) に制限されます。結果として、保護モードは、次の図で示すように、互換性アーキテクチャによって既存の拡張機能への影響を少なくしています。

図 1: IE の保護モードの互換性アーキテクチャ
互換性レイヤは多数の既存の拡張機能の要求に対処します。これは、ユーザー プロファイルの My Documents フォルダや HKEY_CURRENT_USER レジストリ ハイブといった中間の整合性のリソースへの書き込みを遮断します。互換性レイヤは、汎用 Windows 互換性修正プログラムを使用して、これらの処理を整合性の低い次のロケーションに自動的にリダイレクトします。
上位にある 2 つの特権ブローカー プロセスによって、Internet Explorer と拡張機能はユーザーの同意を得た上位処理を実行できます。たとえば、ユーザー特権ブローカー (IEUser.exe) プロセスは、ユーザーが整合性の低い領域以外にファイルを保存できる関数を備えます。さらに、管理者特権ブローカー (IEInstal.exe) プロセスでは、Internet Explorer は ActiveX コントロールをインストールできます。
対処策
解決策
問題のサイトを信頼済みサイトの一覧に追加します。
保護モードをオフにします (非推奨)。
互換性テスト
Windows Vista® および Windows Server® 2008 に対応した解決策の活用
その他のリソースへのリンク
Windows 64 ビット
機能の影響
高
概要
Windows Vista® および Windows Server® 2008 は、AMD および Intel の 64 ビット アーキテクチャ プロセッサを完全にサポートします。Windows Vista® および Windows Server® 2008 の 64 ビット バージョンでは、WOW64 エミュレータを使用して、すべての 32 ビット アプリケーションを実行できます。ただし、16 ビット アプリケーション、32 ビット インストーラ、および 32 ビット カーネル モード ドライバは、カーネルでサポートされていません。
64 ビット ドライバは、すべて Windows Vista® および Windows Server® 2008 64 ビット バージョン用にデジタル署名が必要です。署名のないドライバはサポートされません。また、64 ビットの Windows Vista® および Windows Server® 2008 にインストールすることもできません。デジタル署名の確認は、インストール時およびドライバのロード時の両方で行われます。
現象
16 ビットの実行可能プログラム、16 ビットのインストーラ、32 ビットのカーネル ドライバを使用するアプリケーションまたはコンポーネントは、Windows Vista® および Windows Server® 2008 の64 ビット版では起動に失敗するか、正常に機能しません。この場合、次のエラー メッセージが表示されます。
プログラムまたは機能 [exepath]\[app16bit].exe は、Windows の 64 ビット バージョンでの非互換性のために起動または実行できません。64 ビットの Windows 互換バージョンが使用可能かどうかについては、ソフトウェアの製造元にお問い合わせください。
16 ビットのインストーラやアプリケーションを起動すると、次のようなエラー メッセージが表示されます。
このファイルのバージョンは、実行中の Windows のバージョンと互換性がありません。必要なプログラムのバージョンが x86 (32ビット) または x64 (64ビット) のいずれであるかをコンピュータのシステム情報で確認し、ソフトウェア メーカーにご連絡ください。
64 ビットシステムでは、32 ビットのカーネル ドライバのインストールは失敗します。インストーラによってレジストリを編集して手動でドライバを追加すると、このドライバがロードされないため、システムにエラーが発生する可能性があります。
64 ビット システムでは、64 ビットの署名のないドライバのインストールは失敗します。インストーラによってレジストリを編集して手動でドライバを追加すると、署名のないドライバの場合はロード時にロードされません。
対処策
新しい機能に対応した解決策の活用
16 ビットのコンポーネントをアプリケーションからすべて削除し、32 ビットまたは64 ビットの同等のアプリケーションと置換します。
16 ビットのインストーラをすべて 32 ビットまたは 64 ビットのインストーラに変換します。
アプリケーションでカーネル モード ドライバが使用されている場合は、64 ビット バージョンのドライバを作成します。アプリケーションによって OS プラットフォーム (32 ビットまたは 64 ビット) を検出し、OS プラットフォームに基づいた適切なドライバ アーキテクチャをインストールします。
すべての 64 ビット ドライバがデジタル署名されていることを確認します。
互換性テスト
その他のリソースへのリンク
IIS 7
機能の影響
高
概要
Internet Information Server 7 は、画期的な方法で Web アプリケーションの開発と管理を実現します。IIS 7 によりさまざまコンポーネントを細かく制御することができ、管理コストが削減され、セキュリティが向上し、開発が容易になります。
また、多くの面で、以前のバージョンよりも機能が強化されています。IIS 6 またはそれ以前のバージョン用に開発されたアプリケーションについて、その機能に影響を与える可能性がある変更点を以下に示します。
IIS はコンポーネント化され、セットアップは細分化されています。すべてのコンポーネントが既定でインストールされるわけではありません。NTLM は既定ではインストールされません。
ファイルのメモリへのバッファ処理は既定で有効になっています。
ISAPI の変更。
メタベースの変更 (バックアップ/復元、インポート/エクスポート)。
MMC スナップイン拡張機能は機能しません。
IIS をリセットしても W3svc は停止しません。W3svc を開始しても IISAdmin は開始されません。
Aspnet_regiis.exe は大幅に変更されました。
非推奨の IIS のコンポーネント
以下の IIS の機能は廃止され、IIS 7 では利用できません。
IIS 5.0 分離モード
メタベース アカウントの再作成 (チェッカー コード)
サブ認証 (パスワードの同期および古いダイジェスト認証)
組み込みの Passport のサポート
Convlog.exe
クラスタ化 UI のサポート
IISRESET –reboot オプション
IIS シェル拡張
NNTP
ASP コンテンツ ローテータおよび Nextlink
サーバー側イメージ マップ
インターネット データ コネクタ (HTTPODBC.DLL)
URLContent Rating UI
承認 ISAPI
パスワード変更コード
%windir%\system32 にある IIS*.VBS コマンド ライン ツール
WebDAV
Front Page Server Extensions
現象
存在しないコンポーネントを使用するサイトは実行できない場合があります。
非推奨のコンポーネントを使用するサイトは、変更しないと実行されません。
非推奨の IIS メタベースに依存する管理ツールや管理方法は使用できなくなります。
以前のバージョンとは異なり、W3SVC のサイクル処理のみでは問題が解決されない場合があります。
対処策
インストールされている IIS の機能を確認し、適切な動作を有効にするために必要な機能を有効にします。IIS 7.0 では、Web サーバーを軽量の Server Core と、これにプラグインすることができる 40 以上の機能モジュールに分割しています。これらのモジュールは、静的な Web コンテンツをダウンロードできるようにする StaticFileModule、統合された NTLM 認証をサポートする WindowsAuthModule などの必要な機能を個々に正確に提供できるように、サーバーに個別にインストールできます。
-
IIS 7.0 には、分散 XML 構成ファイルの階層に基づいた新しい委任された構成システムがあります。これらのファイルは、クリーンで強固に構造化された XML ディレクティブを使用して、IIS と ASP.NET の構成を並行して保存できる、ポータブルな構成管理の方法を提供します。
以前のバージョンのリセット機能を提供するには、IIS 7 関連サービスのサイクル処理が必要になる場合があります。再開時に各サービスをチェックして、再開を確認してください。
その他のリソースへのリンク
Microsoft GINA (Graphical Identification and Authentication)
機能の影響
高 (頻度: 低)
概要
サードパーティ サーバーへのログオンやサードパーティ デバイスによるログオンの場合、ISV は Windows Vista® および Windows Server® 2008 よりも前に Windows XP で、GINA (Graphical Identification and Authentication) のダイナミック リンク ライブラリを置換する必要がありました。Windows XP では、このようなアプリケーションはさらに既存の UI を置換し、スマート カードとリモート デスクトップ機能を実装する必要がありました。
注 アプリケーションが Windows XP でこのように機能していなかった場合、この情報は該当しません。
Windows Vista® および Windows Server® 2008 では、LogonUI と WinLogon が直接相互に通信する新しい認証モデルが導入されています。このモデルは、GINA には存在しなかった簡潔性、スケーラビリティ、および柔軟性を備えています。GINA モジュールとは異なり、ISV はログオン画面の UI を置換する必要はなく、ユーザーのために UI を再作成する負担がなくなります。ISV は、資格情報プロバイダという LogonUI にプラグインするモジュールを作成し、UI を記述し、資格情報を収集して WinLogon に渡すことができます。資格情報プロバイダは、WinLogon に対して完全に透過的です。
また、資格情報プロバイダは追加式です。つまり、ユーザーは複数の資格情報プロバイダをインストールし、使用するプロバイダを選択できます。資格情報プロバイダは、ユーザーによる選択やイベント ドリブンが可能なモジュールです。Windows Vista® および Windows Server® 2008 では複数の資格情報プロバイダが共存できますが、サードパーティ用にのみ提供されているのではありません。実際には、Windows にはユーザー名とパスワードの資格情報プロバイダ、およびスマート カードの資格情報プロバイダという 2 つの資格情報プロバイダが搭載されています。
また、資格情報プロバイダは CredUI 内で再利用できます。つまり、LogonUI で資格情報を記述して収集するオブジェクトを使用して、CredUI のシナリオでまったく同じ資格情報を収集できます。
Windows XP と Windows Server 2003 の GINA 機能は非推奨となり、Windows Vista® および Windows Server® 2008 から削除されました。アプリケーションの GINA モジュールは機能しないため、Windows Vista® および Windows Server® 2008 の新しい認証モデルを使用して再作成する必要があります。
現象
カスタム ログオン アプリケーションを正常にインストールできなくなります。
Windows Vista® および Windows Server® 2008 でカスタム ログオン アプリケーション (Windows XP 技術を使用) を使用してログオンできなくなります。これには、バイオメトリック デバイス、ログオン用カスタム UI、カスタム ログオン UI を使用したリモート ユーザー向け仮想プライベート ネットワーク (VPN) ソリューションなどが含まれます。
対処策
新しい機能に対応した解決策の活用
その他のリソースへのリンク
セッション 0 の分離
機能の影響
高 (頻度: 低)
概要
Windows XP、Windows Server 2003、および Windows オペレーティング システムの以前のバージョンでは、すべてのサービスはコンソールにログオンした最初のユーザーと同じセッションで実行されます。このセッションはセッション 0 と呼ばれます。サービスとユーザー アプリケーションをセッション 0 で同時に実行することは、セキュリティ上の危険をもたらします。この場合、サービスはより高い権限で実行されるため、悪意のあるエージェントが自身の権限レベルを昇格させる手段を探している場合、その標的となります。
Microsoft Windows Vista® および Windows Server® 2008 オペレーティング システムでは、セッション 0 のサービスを分離し、セッション 0 を非対話型にすることによって、このセキュリティ上の危険が軽減されます。Windows Vista® および Windows Server® 2008 では、システム プロセスとサービスのみがセッション 0 で実行されます。最初のユーザーはセッション 1 にログオンし、その後のユーザーはそれに続くセッションにログオンします。つまり、サービスがユーザーのアプリケーションと同じセッションで実行されることはないため、アプリケーション コードに起因する攻撃を防ぐことができます。
影響を受けるドライバ クラスの例としては次のものがあります。
この機能により影響を受けるアプリケーション クラスには次のものがあります。
現象
アプリケーションに属しているサービスから UI が返されても、アプリケーションがサービスを待機していると、UI はユーザー セッションで表示されません。
対処策
解決策
アプリケーションのサービスで UI が使用される場合、Windows Vista® および Windows Server® 2008 に組み込まれた軽減策により、ユーザーは特別なデスクトップでセッション 0 の UI を利用できます。このとき、セッション 0 のデスクトップ全体は公開されず、アプリケーションに固有の UI のみが提供されます。
アプリケーションでグローバルな名前付きオブジェクトが作成された場合は、Windows XP 互換モードを使用して、アプリケーションがセッション 0 のサービスと引き続き連動することを確認します。
互換性テスト
Windows XP 上で、ターミナル サーバー モードまたはユーザーの簡易切り替え (FUS) モードでアプリケーションのテストと検証を行います。このシナリオで Windows XP でアプリケーションが正常に動作すれば、Windows Vista® および Windows Server® 2008 でも動作する可能性はきわめて高くなります。
Window XP 互換モードを適用した後、アプリケーションが正常に機能することを検証します。この互換モードには、セッション 0 のいくつかの問題に対する軽減策が含まれます。
Windows Vista® および Windows Server® 2008 でドライバをテストし、正常に動作することを確認します。それができない場合、FUS を有効にし、複数のユーザーがログオンしている状態で、Windows XP でドライバをテストします。ドライバが 2 番目およびそれに続くログオン ユーザーで正常に動作する場合、Windows Vista® および Windows Server® 2008 でセッション 0 の変更によって影響が出る可能性は低くなります。このテストによって検出されない唯一の問題は、Windows Vista® および Windows Server® 2008 のセッション 0 でビデオ ドライバがないことに関連して発生する問題です。
Windows Vista® および Windows Server® 2008 に対応した解決策の活用
リモート プロシージャ コール (RPC) や名前付きパイプなどのクライアント メカニズムまたはサーバー メカニズムを使用して、サービスおよびアプリケーション間で通信を行います。
WTSSendMessage 関数を使用して、ユーザーのデスクトップに簡単なメッセージ ボックスを作成します。これにより、サービスはユーザーに通知を送信し、簡単な応答を要求できます。
複雑な UI の場合は、CreateProcessAsUser 関数を使用してユーザーのセッションでプロセスを作成します。
サービスで使用可能なイベントやマッピングされたメモリなどの名前付きオブジェクトには、明示的にLocal\ または Global\ のいずれかの名前空間を指定します。
その他のリソースへのリンク
ネットワーキング: TCP/IP スタックおよび Windows Filtering Platform
機能の影響
高
概要
Windows Vista® および Windows Server® 2008 ネットワーキング スタックは、完全に書き換えられました。このネットワーキング スタックでは、Windows XP または Windows Server 2003 に実装されているデュアル スタック モデル (IPv4 および IPv6 をサポート) に代わり、複数の IP レイヤをサポートする単一のトランスポートおよびフレーミング レイヤによる新しいアーキテクチャが実装されます。また、新しい機能とプロトコル拡張機能もいくつか搭載されています。新しいスタックは大幅にモジュール化され、柔軟性と拡張性に優れています。既存のアプリケーションがさまざまなレイヤのスタックと連携する際、そのアプリケーション互換性を維持するためにあらゆる試みがなされてきましたが、それにもかかわらず、変更 (大部分が改善による副次的な影響によるものであるが) によって潜在的なアプリケーション互換性の問題が発生する可能性があります。アプリケーション開発者はこのアプリケーションへの変更による影響について慎重に評価し、理解する必要があります。
Microsoft WFP (Windows Filtering Platform) API では、開発者が、Windows Vista® および Windows Server® 2008 オペレーティング システムのネットワーキング スタックおよびオペレーティング システム全体に存在する複数のレイヤで動作するフィルタリングと連携するコードを作成できるようになりました。また WFP では、アプリケーションによるソケット API の使用に基づいて、認証された通信と動的ファイアウォール構成などのファイアウォール機能の統合やサポートも行われます。
注 WFP 自体は、ファイアウォールではありません。ファイアウォールの実装を可能にするシステム サービスおよび API のセットです。
Windows Vista® および Windows Server® 2008 では、次の TCP/IP スタックの要素はサポートされません。
ファイアウォール フック ドライバ機能およびフィルタ フック ドライバ機能 (非推奨)
rexec、rsh、finger などの R シリーズ ツール。これらのツールは必要に応じて Services for Unix コンポーネントから入手できます。
インターネットワーク パケット交換 (IPX) プロトコル。IPX は非推奨であり、マイクロソフトからは入手できなくなりました。この変更によるアプリケーションの互換性への影響はほとんどありません。
現象
Windows XP 用に構築されたアプリケーションがネットワーキングにパブリック関数だけを使用している場合、アプリケーションの機能に問題は発生しないはずです。その機能を検証するには、Windows Vista® および Windows Server® 2008 上でテストを行います。
ファイアウォール フック ドライバ関数またはフィルタ フック ドライバ関数を使用している場合、アプリケーションは動作しません。
マイクロソフトが公開したことがない内部構造や関数呼び出しに依存している場合も、アプリケーションは動作しません。
カーネル モードで記述されたトランスポート ドライバ インターフェイス (TDI) フィルタ ドライバは、OS をアップグレードした後、正常に動作しない場合があります。
注 TDI インターフェイスは、将来のリリースでは非推奨となる予定です。ただし、これらのドライバは Windows Vista® および Windows Server® 2008 でも引き続き動作します。
対処策
新しい機能に対応した解決策の活用
WFP では、ネットワーク セキュリティ開発者に豊富な機能とサービスを公開し、利用可能な機能セットに関するガイダンスやドキュメントを用意しています。
注 Services for Unix および R シリーズに依存するアプリケーションやスクリプトでは、これらのツールを最初にインストールする必要があります。
その他のリソースへのリンク
ネットワーキング: カーネル モード IP ヘルパー API
機能の影響
高
概要
Windows の以前のバージョンでは、カーネルにアクセスするための API セットが Winsock クライアントに含まれていませんでした。Windows Vista® および Windows Server® 2008 では、これが変更されました。また、Windows Vista® および Windows Server® 2008 では既定で IPv6 がサポートされるようになりました。新しいヘルパー API セットは、IPv4 および IPv6 に対して別々の API を持つのではなく、次のような新しいテクノロジ全体に共通する機能を搭載するように設計されました。
WSK (Windows Sockets in Kernel) クライアント向けのカーネル モード関数
IPv6 サポート
IPv4 および IPv6 のアドレス指定のための単一の関数セット
一貫性のある、拡張可能なオブジェクト モデルの搭載
ネットワーク サービス インターフェイスに基づく優れたセキュリティ モデルの搭載
コンパートメントやサブインターフェイスなどの新しいスタック機能の公開
現象
旧バージョンのヘルパー API や文書化されていないカーネル関数呼び出しを使用したアプリケーションは機能せず、不安定になる場合があります。
対処策
ネットワーキング: IPv6
機能の影響
高 (頻度: 中)
概要
Windows Vista® および Windows Server® 2008 の TCP/IP スタックでは、既定で IPv6 が有効になっています。利用可能な場合は IPv6 接続が推奨されます。TCP/IP スタックにフックするアプリケーションの場合、これは次のような意味を持ちます。
IPv6 互換のアプリケーションやサービスでは、Teredo (NAT を介して IPv4 内部に IPv6 をカプセル化する) の組み込み NAT トラバーサル機能によって、IPv4 ネットワーク上でのピア ツー ピア接続の成功率が大幅に向上する可能性があります。
ネットワークが IPv6 をサポートしているかどうかにかかわらず、Windows Vista® および Windows Server® 2008 スタックによって IPv6 トラフィックが生成されます。したがって、たとえば、すべての Windows Vista® および Windows Server® 2008 システムは最低 1 つの IPv6 アドレス (リンク ローカル用) を持ち、IPv4 と IPv6 の両方で DNS 参照を試行します。
Windows Vista® および Windows Server® 2008 スタックでは、通信する必要があるリモート システムの IPv6 アドレスを検出できた場合は、常に IPv6 の使用を優先します。セッション内で両方のシステムが IPv6 アドレスを持っている場合、IPv6 互換アプリケーションまたはサービスでネットワーク通信が行われます。たとえば、LAN 上でのファイルの共有は通常 IPv6 を使用して行われます。
IPv6 アドレスが存在し、既定でオンになります。さらに、6to4、6over4、ISATAP、または Teredo などのリンク ローカル、グローバル、一時、または移行テクノロジに関連付けられた、複数の IPv6 アドレスが存在する場合があります。
注 Teredo は既定で有効になりますが、アプリケーションやサービスが Teredo の使用を試行しない限り休止状態のままです。Teredo サービスがアクティブになるのは、次のような場合です。1. リッスン状態のアプリケーションまたはサービス用の Windows ファイアウォールの例外で、エッジ トラバーサル オプションが有効になっている (Windows ファイアウォールの MMC スナップインの詳細設定、または Windows ファイアウォール API のオプションで呼び出される) 場合。2. アプリケーションまたはサービスが Teredo のアドレスを使用して通信を試行する場合 (Windows ファイアウォールの通常のステートフル検査機能では、発信要求に対応する IPv6 応答のみが許可されます)。
Windows Vista® および Windows Server® 2008 の TCP/IP スタックでは、強力なホスト ルーティング モデルがサポートされます。つまり、マルチ ホーム コンピュータから、送信先アドレス以外にパケットのソース アドレスに基づいて、パケットのルーティングが行われます。IPv6 では、各コンピュータが複数の IP アドレスを取得し、移行テクノロジによって、ルーティングに関する限り基本的にマルチ ホーム コンピュータとして見なされるため、この変更が必要になります。以上のシナリオで適切な接続が行われていることを確認するには、ネットワーキング スタックに強力なホスト ルーティング モデルを実装する必要があります。
現象
Windows XP TCP/IP スタックを使用するアプリケーションや、IPv6 プロトコルを認識しないアプリケーションは正常に機能しなくなり、クラッシュするか、システムが不安定になる場合があります。
アプリケーションの強力なホスト ルーティング モデルには、次のような意味があります。
プロトコルに柔軟な API を使用せず、IPv6 互換でもないアプリケーションは、Teredo IPv4 NAT トラバーサルの利点を活用することができず、接続先で NAT が使用されている場合、接続に失敗する可能性があります。
対処策
アプリケーションを次のように書き直す必要があります。
スタックにフックするアプリケーションには、IPv6 トラフィックを処理する機能が必要です。少なくとも、IPv6 トラフィック受信時にアプリケーションがクラッシュしないようにします。
アプリケーションが IPv4 アドレスが 1 つだけ存在する状態に依存している場合、複数の IPv6 アドレスを処理するよう変更が必要になります。さらに、アプリケーションが 1 番目のアドレスを選択した場合、使用する IPv6 アドレスをより慎重に識別する必要があります。これは、IPv6 リンク ローカル アドレスがルーティング不可であるために、アプリケーションが動作しなくなる場合があるためです。その代わり、アプリケーションは名前で接続を許可する関数を使用し、最も適切なアドレスを自動的に選択する必要があります。
また、IPv6 専用のシナリオを処理し、サポートする必要があります。
アプリケーションに、強力なホスト ルーティング モデルのサポートおよび実装が必要です。
IPv6 互換アプリケーションで、(Windows ファイアウォール API を使用して) Windows ファイアウォールの例外にエッジ トラバーサル フラグを設定する場合は、自動的に Teredo の IPv4 NAT トラバーサルが利用されます。
その他のリソースへのリンク
互換性のリスク
非推奨のコンポーネント
Windows Vista® および Windows Server® 2008 では、Windows の以前のバージョンに含まれる以下のコンポーネントは削除されます。
カーネル モード プリンタ ドライバのサポート。すべてのプリンタ ドライバは、今後、ユーザー モード ドライバ フレームワークに従う必要があります。カーネル モード プリンタ ドライバはすべて Windows Vista® および Windows Server® 2008 へのロードがブロックされます。詳細については、ユーザー モード ドライバ フレームワーク (UMDF) のサイト (英語) を参照してください。
32 ビット アプリケーション用の Windows ヘルプ (WinHlp32.exe) - Windows ヘルプはサポートされておらず、Windows ヘルプのコードの一部はリリースに向けて削除されています。Windows Vista® および Windows Server® 2008 でファイル名の拡張子が .HLP である 32 ビット ヘルプ ファイルを表示するには、マイクロソフト ダウンロード センターから Windows ヘルプをダウンロードしてインストールする必要があります。詳細については、「ヘルプ エンジン サポート」を参照してください。
注 HTML ヘルプ ファイルと .CHM ファイルは、Windows Vista® および Windows Server® 2008 でも引き続きサポートされます。
Microsoft® FrontPage® Server Extentions - Windows® SharePoint® Services では、開発者コミュニティ向けに拡張機能セットが搭載されました。
Services for Macintosh - このコンポーネントの代替コンポーネントはありません。
D3DRM - DirectX は、Windows Vista® および Windows Server® 2008 でサポートされる唯一のグラフィック パッケージです。
Web 発行ウィザード - このコンポーネントの代替コンポーネントはありません。
NTLMSSSP サービス
Windows Management Instrumentation Driver Extensions (WMI) サービス
RPC-Locator サービス
POP3 電子メール サーバー - このコンポーネントの代替コンポーネントはありません。
NetDDE - セキュリティ上の理由から、Windows Vista® および Windows Server® 2008 は NetDDE をサポートしていません。NetDDE は、Windows XP SP 2 および Windows Server 2003 では既定で無効になっています。通常の DDE は引き続きサポートされます。NetDDE は、DDE トランスポートを使用するアプリケーションが、ネットワーク上でデータを透過的に交換できるようにする技術です。NetDDE がサポートされていないと、アプリケーションはネットワーク上でデータを交換できません。この問題を回避するには、DCOM や Windows Communication Foundation などの他のネットワーキング技術を使用してください。
その他のリソースへのリンク
Windows ディスプレイ ドライバ モデル
Windows Vista® および Windows Server® 2008 ディスプレイ ドライバ モデル (VDDM) は、Windows のディスプレイ ドライバの安定性を向上させた、まったく新しいディスプレイ ドライバ モデルです。VDDM には、主に次のようなさまざまな特長があります。
以前の Windows バージョンの大部分のアプリケーションでは VDDM による影響はありませんが、以下の機能に問題が発生する危険性があります。
DX ゲームの互換性。これにより、DX ランタイム、IHV ドライバ、またはコア グラフィック スタックの問題が発生します。
モバイル機能。ACPI 要件が厳しくなることにより、ホットキー、クローンビュー、明るさ、およびズームなどの機能に問題が起こります。
ユーザー補助機能。特に、Windows XP によって設計された画面拡大表示アプリケーションは、Windows Vista® および Windows Server® 2008 上では動作しません。
安全な例外処理
以前のバージョンの Windows では、IsBadReadPtr および IsBadWritePtr 関数を使用してパラメータを検証していました。Windows Vista® および Windows Server® 2008 では、これらの関数は禁止されました。また、アプリケーションがパラメータ検証にこれらの関数を使用している Windows コンポーネントに依存していると、Windows で既にこれらの関数が使用されていないことが判明します。パラメータ検証を行う場合、アプリケーションは Windows に依存できません (null 値のチェックが行われ、それが不正なポインタである場合、アプリケーションでエラーが発生します)。
安全な例外処理 (SEH) は実行不可フラグとも連携しています。例外がディスパッチされる前には、例外ハンドラに実行可能 (PAGE_EXECUTE) フラグが付いていないかどうか、さらにハンドラが有効なコードであり、SEH テーブルに格納されているかどうかが確認されます。
DllMain の操作
プロセスの作成時の DLL のロード順序は保証されないため、それらに依存して操作を行うことはできません。DllMain 内の複雑な処理によって アプリケーションが停止またはクラッシュする場合、新しい OS コンポーネントの依存関係が原因である可能性があります。詳細については、次の MSDN のページを参照してください。
Outlook Express の名称変更
Outlook Express は変更および移動され、Windows Mail という名称になりました。MAPI アプリケーションはこの変更を認識する必要があります。MAPI の既定のプログラムを動的に使用する大部分のアプリケーションでは、互換性の問題は何も見られないはずです。
シェル: テーマとマイ ドキュメントの場所
Windows Vista® および Windows Server® 2008 の Windows Explorer Shell に新しい視覚テーマが導入されました。Windows の以前のバージョンでテーマを処理できるアプリケーションの場合、新しいテーマによる互換性の影響はありません。
また、Windows Vista® および Windows Server® 2008 では、マイ ドキュメントの場所と構造が変更され、より優れたユーザー エクスペリエンスが実現されました。ユーザー データは、\users\%username%\ フォルダ構造に保存されるようになりました。Pictures、Music、Documents、Desktop、および Favorites は、はすべてこのフォルダ構造の直下にある新しいフォルダです。アプリケーションから ShGetFolderPath 関数およびフォルダ パスが動的に使用されると、自動的に新しいパスとファイル場所にリダイレクトされます。通常、この変更によるアプリケーション互換性の影響はありません。
ユーザーの簡易切り替え (FUS)
ユーザーの簡易切り替え (FUS) は、ドメインに参加しているコンピュータを含むすべてのバージョンの Windows Vista® および Windows Server® 2008 で使用できるようになりました。アプリケーションやインストーラは FUS を認識し、複数のログイン ユーザーのセッションやターミナル サーバーのシナリオを処理できるようにする必要があります。詳細については、「Microsoft Windows XP のユーザー簡易切り替え機能: ビジネス アプリケーションの作成に関する設計ガイド (英語)」のページを参照してください。
CriticalSection コードの変更
CriticalSection コードが変更され、セキュリティが向上し、堅牢性が高まりました。クリティカル セクション ロックを使用したアプリケーションでは、以下を実行する必要があります。
クリティカル セクションを常に初期化する。
文書化されていないオブジェクトの読み込みは行わない。文書化されていない構造が読み込まれてクリティカル セクションの状態を評価するアプリケーションでは、未初期化クリティカル セクションや解放済みクリティカル セクションの検索中に、障害が起こる可能性が高くなります。
スタベーションを回避する。アプリケーションから Sleep が呼び出さるときに、クリティカル セクション ロックが保持されていると、ロックを必要とする他のスレッドでスタベーションが発生する可能性があります。Sleep 呼び出しは、LeaveCriticalSection 呼び出しの後に配置する必要があります。
詳細については、MSDN のクリティカル セクション オブジェクトのトピック (英語) を参照してください。
既定のプログラム
概要
既定のプログラムは、競合アプリケーションを念頭に置いた、ユーザーごとのファイルとプロトコルの関連付けを管理する新しいインフラストラクチャです。既定のプログラム機能を使用するには、アプリケーションで登録する必要があります。既定のプログラムは Windows Vista® および Windows Server® 2008 以降で高い視認性を実現し、特定のタスクをアプリケーションでコーディングおよび維持しやすくします。
対処策
Windows Vista® および Windows Server® 2008 には、アプリケーションで利用できる新しい機能セットが用意されています。この新しい機能セットは、"既定のプログラム" と呼ばれます。既定のプログラムは、ユーザーによる既定動作の選択を支援するために設計されました。Windows Vista® および Windows Server® 2008 以降の既定は、主にコンピュータ単位のレベルではなくユーザー単位のレベルで制御されます。これにより、マイクロソフトが今後標準化されると考えているマルチ ユーザー コンピュータ環境に対応する非常に優れた柔軟性が得られます。この一環として、ユーザー向けの新しい集中型 UI が追加され、また、ユーザーによる選択の表現を支援するために必要なツールが ISV に提供されます。既定のプログラムは、アプリケーションに以下の利点をもたらします。
簡単な既定採用プロセス
ユーザー単位のファイルとプロトコルの関連付け
プログラムによる既定の確認
再利用できる共通の Windows UI
Windows 内の通知領域
この機能は、主に競合アプリケーション向けに設計されました。競合アプリケーションとは、mp3 や jpeg などのファイル形式または http や mailto などのプロトコルの既定に設定されるアプリケーションです。主に独自のプロトコルとファイルの関連付けを扱うアプリケーションでは、他のアプリケーションに侵害されることがないため、一般的にはこの新機能を使用する必要はありません。競合しないアプリケーションは、XP の場合と同様に動作し、インストールされます。ただし、どのアプリケーションでも新しい既定のプログラム機能を利用できます。
既定のプログラム機能は、一連のコントロール パネルおよびオープン API としてオペレーティング システムに組み込まれています。コントロール パネルや API を使用するアプリケーションの場合は、特定のスキーマを記述することにより、既定のプログラムの一部としてインストール時に登録する必要があります。これにより、アプリケーションがコントロール パネルの [既定のプログラム] に表示され、ユーザーはアプリケーションの既定のファイルの関連付けとプロトコルをいつでも復元できます。
アプリケーションを既定のプログラムに登録すると、そのアプリケーションは API を通して提供される新機能を利用できます。既定のプログラムにより、API では以下の処理が実行できるようになります。
既定のプログラム機能の目的は、インストール後のユーザーによる選択を簡単に表現し、既定を求めて競合して既定を主張するための単純なフレームワークをアプリケーションに提供することです。
既定のプログラムを使用する理由
高レベルのポイントを次に示します。
既定のプログラムは、アプリケーションの検出に役立ちます。
Windows Vista® および Windows Server® 2008 では、すべての管理者が HKLM に書き込むことを可能にする基本アーキテクチャが変更されています。
既定のプログラムを使用すると、アプリケーションは、コードをほとんど変更せずに Windows XP パリティ プロセス フローを維持できます。
コンピュータ レベルの既定だけを主張しても、常に希望の結果が得られるわけではありません。
既定のプログラム フレームワークを使用する競合アプリケーションでは、消費者にとって明確な利点がありますが、既定のプログラムを使用するアプリケーションにとっても大きな利点があります。
既定のプログラムは、登録済みアプリケーションに充実した UI エクスペリエンスを提供するため、既定のプログラムの優れた機能をユーザーに実際に通知できます。さらに、URL でデジタル署名されているアプリケーションでは、その URL を表示でき、ユーザーは簡単にホーム Web サイトに戻り、その企業が提供している他のアプリケーションや拡張機能を確認できます。
この新しい API セットを使用すると、新しいアプリケーションの開発コストも大幅に削減できます。ほぼすべての競合アプリケーションは、それ自体が既定であるかどうかを確認するために、監視やチェックを行います。新しい API セットを使用すると、以前のバージョンの OS のようにレジストリをクロールする代わりに、1 回の API 呼び出しで監視やチェックを実行できます。
新しい API セットは、アプリケーションがユーザー アカウント制御 (UAC) を使用する新しい環境で正常に機能するためにも役立ちます。UAC は管理者を選択し、システムに標準ユーザーと見せかけることで実装されます。つまり、Windows Vista® および Windows Server® 2008 以降では、管理者は通常 HKLM に書き込むことができません。管理者を認識しないとプロセスが管理者の代わりに動作できないように、このような処理が行われます。インストールでは通常、経験によって、常に高い権限が与えられます。しかし、インストール後に既定を主張できるようにするアプリケーションの場合は、コンピュータ単位のレベルではなくユーザー単位のレベルで既定を主張する必要があります。新しい API セットに切り換えると、この処理が自動的に行われます。インストール後にコンピュータ単位で既定を主張しようとするアプリケーションでは、障害が発生します。
アプリケーションで既定のプログラムの使用に移行するもう 1 つの強力な理由は、目的の結果を常に達成することです。ファイルとプロトコルの関連付けは、レジストリ内の階層構造から導き出されます。
この構造の一部による指示で、ユーザー単位の既定はコンピュータ単位の既定よりも常に優先して選択されます。つまり、アプリケーションが XP のように HKLM に書き込んで既定を主張するために、コード内に昇格ポイントを作成する場合、希望の結果を常に実現できるとは限りません。別の類似アプリケーションをインストールし、ユーザー単位のファイルとプロトコルの関連付けを採用する既定のプログラムの API を使用すると、ユーザー単位の既定の優先度の方が高いため、以前のアプリケーションは既定ではなくなります。
既定のユーザーのチェック リスト
SPAD について正しく登録する
プログラムの既定について正しく登録する
ファイルの関連付け、プロトコル処理、"プログラムから開く"、スタート メニュー、クイック起動を正しく登録する
インストールがガイドラインに従っている (コンピュータ単位の登録を設定し、既定を採用しない)
初回の実行がガイドラインに従っている (ユーザーに設定、ファイルの関連付けなどを確認する)
インストールまたはアップグレードが既定を採用しない
既定を正しくセルフチェックする既定を採用する前のユーザーのアクセス許可
仮想化をトリガしない
AppCompat の警告またはブロックがない (PCA)
XP でも正しく動作する
[OS のファイルの関連付けなどの UI を使用する]
[署名されたコード - プログラムの既定での URL]
その他のリソースへのリンク
ファイルの関連付けに関するドキュメント
プログラム互換性アシスタント (PCA)
PCA の概要
ヘルプとサポートのプログラム互換性ウィザードおよびファイル プロパティの [互換性] タブは、Windows XP でプログラムの互換性に関する問題をユーザーが修正するための便利なツールです。これらのツールの大きな制約はその検出性と、これらのツールを使用するタイミングをユーザーが把握する必要があることです。プログラム互換性アシスタント (PCA) は Windows Vista® の新機能です。PCA を使用すると、互換性の問題が含まれる古いプログラムの機能が自動的に改善されます。PCA はプログラムの既知の問題を監視します。問題が検出された場合、PCA はユーザーに問題を通知し、ユーザーが次にプログラムを実行する前に効果を発揮する解決策を提案します。
ここでは、ユーザーが PCA を使用することが予想されるシナリオ、ユーザー エクスペリエンスの詳細、各シナリオで適用される解決策、および後半では PCA が行う設定の管理方法について説明します。最後のセクションでは、PCA からプログラムを除外する方法を解説します。
PCA のシナリオ
セットアップ プログラムの障害の検出
PCA が使用される主なシナリオの 1 つは、Windows Vista® でのインストールが失敗したセットアップ プログラムを検出し、Windows XP 互換モードを適用するという解決方法を提供することです。
最も多いセットアップの失敗原因は、インストーラが対応する Windows OS バージョンのチェックをハード コーディングしていることによるものです。このようなインストーラでは、通常、現在の Windows のバージョンがサポートされていないため終了する、という意味のエラー メッセージが表示され、インストールは正常に完了しません。
以下に、テスト プログラムによるこのようなエラー メッセージの例を図で示します。

図 10: PCA のエラー メッセージの例
多くの場合、プログラムは GetVersion または GetVersionEx API を使用して、実行中の Windows OS のバージョンに関する情報を収集します。Windows Vista® では、これらの API はメジャー バージョンとして 6 を返します。メジャー バージョンが 5 である XP バージョンを検索するようにプログラムがハード コーディングされていると、Windows Vista® では障害が発生します。Windows XP 互換モードに含まれている XPVersionLie 修正プログラムによって、GetVersion または GetVersionEx API を呼び出したときにプログラムに提供される OS は XP バージョンになります。
PCA はこのシナリオを検出し、インストーラの終了後、以下のようなユーザー インターフェイスを表示します。このシナリオはアンインストーラにも当てはまり、同様のダイアログが表示されます。

図 11: インストーラの終了後の PCA の UI
ユーザーが [推奨の設定を使用して再インストールする] のオプションを選択すると、Windows XP 互換モードがインストーラ プログラムに適用され、インストーラが自動的に再起動します。
内部での処理内容については、以下の質問と回答を通して説明します。
検出ロジックは何ですか。PCA はバージョンの問題が原因でセットアップが失敗したことをどのようにして認識するのですか。
PCA は、バージョンの問題によるセットアップの失敗を特に検索しているわけではありません。PCA が使用するロジックは、セットアップが正常に完了したかどうかを検出します。PCA は Windows Vista® によるセットアップとして検出されるプログラムを監視し、[プログラムの追加と削除] (ARP) にプログラムがエントリを登録したかどうかをチェックします。
ARP にエントリが作成されていない場合、PCA はセットアップが正常に完了しなかったと判断します。PCA はインストール プログラムが終了するまで待機してから、UI を表示します。アンインストーラの場合は、エントリが ARP から削除されるかどうかを監視します。
PCA はセットアップ プログラムに関する情報をどのように取得するのですか。
PCA は Windows Vista® のユーザー アクセス制御 (UAC) 機能によって、セットアップ プログラムかどうかを識別します。UAC はセットアップ プログラムの検出機能を備えており、検出されたセットアップ プログラムが管理者として実行されることを確認します。この処理では、プログラムを起動する前にユーザーから管理者の資格情報や確認が取得されます。
- セットアップ用の PCA ダイアログの各オプションにはどのような機能がありますか。
[推奨の設定を使用して再インストールする]
Windows XP 互換モードを適用し、プログラムを再起動します。互換モードの適用方法の詳細については、後述の PCA 設定の管理に関するセクションを参照してください。
[このプログラムは正しくインストールされました]
セットアップ プログラムは正常に完了したが、ARP にエントリが作成されなかった場合は、PCA が表示される場合があります。このような場合、ユーザーはこのオプションを使用して、次回から PCA ダイアログが表示されないように設定できます。
[キャンセル]
PCA は一切の処理を行いません。
これらのオプションを実行すると、PCA ダイアログが閉じます。ユーザーが前回の PCA ダイアログで [キャンセル] オプションを選択した場合を除き、同じセットアップ プログラムに PCA が再び表示されることはありません。
UAC 下のプログラム障害の検出
PCA の 2 番目のシナリオは、ユーザー アクセス制御 (UAC) 下での実行中にプログラムの障害を検出するというものです。PCA は、UAC 下の 3 種類の異なるプログラム障害を検出します。その各障害について以下で説明します。
インストーラ起動時のプログラム障害の検出
PCA は、プログラムが管理者として実行されておらず、子プログラムは管理者として実行する必要があるために、子 exe ファイルの起動中に障害が発生するというこの特定のシナリオを検出します。よくある例は、プログラムが updater.exe を起動しようとする場合です。これは、プログラムは管理者として実行する必要のある実行可能ファイルを起動しようとして、Windows Vista® および Windows Server® 2008 から新しいエラー コードが返されるためです。同じ updater.exe をエクスプロ