Windows 10 Universal App-Datei- / Verzeichniszugriff

Ich entwickle eine App, die JPEG- und PDF-Dateien von einem konfigurierbaren Speicherort im Dateisystem liest. Momentan ist eine laufende Version in WPF implementiert und jetzt versuche ich, auf die neuen Windows Universal-Apps umzusteigen.

Der folgende Code funktioniert gut mit 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;
    }

Mit der Verwendung von Universal Apps sind mir einige Probleme begegnet:

Directory.Exists ist nicht verfügbaWie kann ich aus Verzeichnissen außerhalb meines App-Speichers lesen?

Um aus einem anderen Verzeichnis außerhalb des App-Speichers zu lesen, habe ich Folgendes versucht:

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

Das Ding ist: Es funktioniert nicht, aber ich bekomme eine Ausnahme:

In TextManager.Universal.DataAccess.dll ist eine Ausnahme vom Typ 'System.UnauthorizedAccessException' aufgetreten, die jedoch nicht im Benutzercode behandelt wurde. Zusätzliche Informationen: Der Zugriff wird verweigert. (Ausnahme von HRESULT: 0x80070005 (E_ACCESSDENIED))

Ich weiß, dass Sie einige Berechtigungen im Manifest konfigurieren müssen, aber ich kann keine finden, die für Dateisystem-E / A-Vorgänge geeignet ist ...

Hatte jemand auch solche Probleme / eine mögliche Lösung?

Lösung Aus den Lösungen, die @Rico Suter mir gegeben hat, habe ich die FutureAccessList in Kombination mit dem FolderPicker ausgewählt. Es ist auch möglich, nach einem Neustart des Programms mit dem Token auf den Eintrag zuzugreifen.

Ich kann dir auch das @ empfehlUX Guidlines und dasGithub sample.

Vielen Dank

Antworten auf die Frage(10)

Ihre Antwort auf die Frage