Windowsまたは.NET for Windows Store アプリAPI: で、実行中のアプリに対して定義されているファイルの種類の関連付けを一覧表示できるサポートはありますか?
私のシナリオでは、さまざまなWindows ストア アプリから参照する予定のWindows ストア クラス ライブラリがあります。理想的には、クラス ライブラリ メソッド内でアプリの定義済みファイル タイプの関連付けを読み取れるようにしたいと考えています。これは可能ですか?
Windowsまたは.NET for Windows Store アプリAPI: で、実行中のアプリに対して定義されているファイルの種類の関連付けを一覧表示できるサポートはありますか?
私のシナリオでは、さまざまなWindows ストア アプリから参照する予定のWindows ストア クラス ライブラリがあります。理想的には、クラス ライブラリ メソッド内でアプリの定義済みファイル タイプの関連付けを読み取れるようにしたいと考えています。これは可能ですか?
現在のところ、 Windows ストア アプリのファイル タイプの関連付けにアクセスする組み込みの方法はないようですが、このブログ投稿のおかげで回避策を実装することができました。
どうやらPackage.appxmanifestファイルは、展開されたアプリと共に配布されるファイルAppxManifest.xmlに変換されます。特にマニフェスト ファイルには、ユーザーが定義したアプリのファイルの種類の関連付けが含まれているため、単純なXMLクエリを使用してこれらの定義を取得できます。
var document = XDocument.Load("AppxManifest.xml");
var xname = XNamespace.Get("http://schemas.microsoft.com/appx/2010/manifest");
var fileTypeElements =
document.Descendants(xname + "FileTypeAssociation").Descendants().Descendants();
var supportedFileExtensions =
fileTypeElements.Select(element => element.Value).ToArray();
このコードはさらに微調整できます。たとえば、FileTypeAssociationノードはApplicationノードの (深い) 子孫であり、同じマニフェスト ファイルに複数存在する可能性があります。それにもかかわらず、上記のコードは、少なくとも最初の試みのアプローチとして機能できるはずです。