Доступ к файлам и каталогам универсального приложения Windows 10

Я разрабатываю приложение, которое читает файлы jpeg и pdf из настраиваемого местоположения в файловой системе. В настоящее время в WPF реализована работающая версия, и теперь я пытаюсь перейти на новые приложения Windows Universal.

Следующий код прекрасно работает с 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;
    }

С использованием Universal Apps я столкнулся с некоторыми проблемами:

Directory.Exists не доступенКак я могу читать из каталогов за пределами моего хранилища приложений?

Чтобы прочитать из другого каталога за пределами хранилища приложения, я попытался сделать следующее:

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();

Дело в том, что это не работает, но я получаю исключение:

Исключение типа «System.UnauthorizedAccessException» возникло в TextManager.Universal.DataAccess.dll, но не было обработано в коде пользователя. Дополнительная информация: доступ запрещен. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED))

Я знаю, что вам нужно настроить некоторые разрешения в манифесте, но я не могу найти подходящие для операций ввода-вывода файловой системы ...

У кого-то тоже были такие проблемы / возможное решение?

Решение: Из решений, которые дал мне @Rico Suter, я выбрал FutureAccessList в сочетании с FolderPicker. Также возможно получить доступ к записи с токеном после перезапуска программы.

Я также могу порекомендовать вамUX Guidlines и этоGithub образец.

Большое спасибо!

Ответы на вопрос(5)

Ваш ответ на вопрос