Acesso universal ao diretório / arquivo de aplicativos do Windows 10

Estou desenvolvendo um aplicativo que lê arquivos jpeg e pdf de um local configurável no sistema de arquivos. Atualmente, há uma versão em execução implementada no WPF e agora estou tentando mudar para os novos aplicativos universais do Windows.

O código a seguir funciona bem com o WPF:

public IList<string> GetFilesByNumber(string path, string number)
    {
        if (string.IsNullOrWhiteSpace(path))
            throw new ArgumentNullException(nameof(path));

        if (string.IsNullOrWhiteSpace(number))
            throw new ArgumentNullException(nameof(number));

        if (!Directory.Exists(path))
            throw new DirectoryNotFoundException(path);

        var files = Directory.GetFiles(path, "*" + number + "*",
           SearchOption.AllDirectories);

        if (files == null || files.Length == 0)
            return null;
        return files;
    }

Ao usar o Universal Apps, tive alguns problemas:

Directory.Exists não está disponívelComo posso ler em diretórios fora do meu armazenamento de aplicativos?

Para ler de outro diretório fora do armazenamento do aplicativo, tentei o seguinte:

StorageFolder folder = StorageFolder.GetFolderFromPathAsync("D:\\texts\\");
var fileTypeFilter = new string[] { ".pdf", ".jpg" };
QueryOptions queryOptions = new QueryOptions(CommonFileQuery.OrderBySearchRank, fileTypeFilter);
queryOptions.UserSearchFilter = "142";
StorageFileQueryResult queryResult = folder.CreateFileQueryWithOptions(queryOptions);
IReadOnlyList<StorageFile> files = queryResult.GetFilesAsync().GetResults();

O problema é que não está funcionando, mas recebo uma exceção:

Ocorreu uma exceção do tipo 'System.UnauthorizedAccessException' no TextManager.Universal.DataAccess.dll, mas não foi tratada no código do usuário Informações adicionais: Acesso negado. (Exceção de HRESULT: 0x80070005 (E_ACCESSDENIED))

Eu sei que você precisa configurar algumas permissões no manifesto, mas não consigo encontrar uma adequada para operações de E / S do sistema de arquivos ...

Alguém também teve esses problemas / uma solução possível?

Solução: Das soluções que @Rico Suter me deu, escolhi o FutureAccessList em combinação com o FolderPicker. Também é possível acessar a entrada com o token após o reinício do programa.

Eu também posso recomendar oLinhas de orientação do UX e istoAmostra do Github.

Muito obrigado!

questionAnswers(5)

yourAnswerToTheQuestion