StorageFolder.GetFilesAsync() メソッドの結果が正しく返されない問題について

こんにちは、Platform SDK (Windows SDK) サポートチームです。

今回は、StorageFolder.GetFilesAsync() メソッドに関して確認されている問題についてご案内します。

 

現象

「[マイ コンピューター] からドライブにアクセスできないようにする」のポリシーが有効になっているドライブ上のフォルダに対して StorageFolder.GetFilesAsync() メソッドを実行しても、ファイルの一覧が取得できません。
フォルダ内ににファイルが存在するにも関わらず、取得される結果は 0 件となってしまいます。

この現象は、StorageFolder.GetFilesAsync() メソッドに限らず、StorageFolder.GetFoldersAsync() メソッドや StorageFolder.GetItemsAsync() メソッドを実行した場合にも発生します。
これらのメソッドを呼び出した際に、インデックスを使用しないクエリが選択された場合に限り発生いたします。

インデックスが使用されないクエリは、以下のいずれかの条件を満たした場合に実行されます。
・GetFoldersAsync() のように引数なしで呼び出した場合
・引数として CommonFolderQuery.DefaultQuery を指定した場合
・IndexerOption.DoNotUseIndexer のオプションを明示的に指定した場合

「[マイ コンピューター] からドライブにアクセスできないようにする」のポリシーは、グループポリシー エディタ内の以下のパスに存在します。
[ユーザーの構成] - [管理用テンプレート] - [Windows コンポーネント] - [エクスプローラー]

 

原因

この現象は、Windows ランタイム API の一部である StorageFolder クラスの不具合によって発生します。

 

回避策

有効な回避策はございません。

「[マイ コンピューター] からドライブにアクセスできないようにする」のポリシーの代わりに、「指定したドライブを [マイ コンピューター] 内で非表示にする」のポリシーで代用できる場合は、こちらのポリシーをご利用ください。

 

状況

現在、この問題の修正を検討中です。
進展があり次第、更新予定です。

 

関連情報

StorageFolder.GetFilesAsync() | getFilesAsync() Method
https://msdn.microsoft.com/ja-jp/library/windows/apps/br227276.aspx

StorageFolder.GetFilesAsync(CommonFileQuery) | getFilesAsync(CommonFileQuery) Method
https://msdn.microsoft.com/ja-jp/library/windows/apps/br227274.aspx