ファイルの種類と URI の関連付けモデル
プラットフォーム
クライアント - Windows 8
サーバー - Windows Server 2012
説明
ファイルの種類と URI の関連付けモデルがWindows 8で変更されました。 アプリは、プログラムによってファイルの種類または URI の既定のハンドラーとして設定できなくなりました。 代わりに、ユーザーは常にファイルの種類または URI スキームの既定のハンドラーを制御します。
症状
この変更がユーザーにどのように表示されるかは、アプリの設計方法によって異なります。次に例を示します。
- 多くのアプリチェック、実行するたびに既定値であるかどうかを確認し、そうでない場合は、ユーザーに既定値として設定するように求めるメッセージを表示します。 ただし、ファイルの種類または URI スキームの既定のハンドラーであるアプリを特定するために、アプリが正確にクエリを実行できなくなったため、これらの操作はどちらも機能しません。
- 多くのアプリには、アプリが既定として機能するファイルの種類を指定するダイアログ ボックスまたはメニューがインストーラーに組み込まれています。 ただし、アプリはプログラムによってファイルの種類または URI スキームの既定のハンドラーとして設定できなくなったため、これは機能しなくなります。
対応策
これらの変更に対応するために、ユーザーが実行できる操作がいくつかあります。
- ユーザーは、ファイルの種類、URI スキーム、またはその両方を処理する既定のアプリを選択するようにコンテキストに応じて求められます(いずれかが指定されていない場合)
- ユーザーには、ファイルの種類または URI スキームを処理できる新しいアプリをインストールした後、既定のハンドラーを変更するオプションが用意されています
- 既定のプログラム コントロール パネルを使用すると、ユーザーはアプリ、またはファイルの種類、URI スキーム、またはその両方の既定値を設定できます。アプリはコントロール パネルにリンクできます
- 既定値は Windows エクスプローラー から変更できます
解決策
これらの変更の結果、次の API ガイダンスが提供されます。
IApplicationAssociationRegistration API 内の一部のメソッド呼び出しの機能が変更されたため、使用しないでください。
- QueryAppIsDefault/QueryAppIsDefaultAll を呼び出して、アプリが既定であるかどうかを判断しないでください
- QueryCurrentDefault を呼び出して、現在の既定値であるアプリ (存在する場合) を判断しないでください
- SetAppIsDefault/SetAppIsDefaultAll を呼び出して既定のアプリを設定しないでください
今後のガイダンスは次のとおりです。
クエリを実行して、ファイルの種類または URI スキームの既定のハンドラーであるアプリを確認しない
ファイルの種類または URI スキームの既定のハンドラーの変更を監視しないでください
ファイルの種類または URI スキームの既定のハンドラーとしてアプリを設定しないでください
アプリ内からファイルの種類または URI スキームの既定値を管理しないでください
アプリのユーザーが既定の管理 UI にアクセスできるようにする場合は、[既定のプログラムの設定] コントロール パネルと統合します (アプリ内の管理 UI はサポートされなくなりました)
- IApplicationAssociationRegistrationUI::LaunchAdvancedAssociationUI を呼び出すと、ユーザーは指定したアプリの [既定のプログラムの設定] コントロール パネル ページにアクセスできます
テスト
- [既定のプログラムの設定] コントロール パネルでアプリが正しく登録されていることを確認するためのテスト
- アプリが適切に登録され、ファイルの種類、URI スキーム、またはその両方の OpenWith リストに表示されることを確認するためにテストします。
- アプリのインストール後に新しいアプリ通知が表示され、ユーザーがファイルの種類、URI スキーム、またはその両方を呼び出して、アプリが処理するために登録したことを確認するテスト
リソース