Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
WinUI-Apps können standardmäßig auf bestimmte Dateisystemspeicherorte zugreifen. Apps können auch über die Dateiauswahl auf zusätzliche Speicherorte zugreifen oder Funktionen deklarieren.
Speicherorte, auf die WinUI-Apps zugreifen können
Wenn Sie eine neue App erstellen, können Sie standardmäßig auf die folgenden Dateisystemspeicherorte zugreifen:
Anwendungsinstallationsverzeichnis
Der Ordner, in dem Ihre App auf dem System des Benutzers installiert ist.
Es gibt zwei Hauptmethoden für den Zugriff auf Dateien und Ordner im Installationsverzeichnis Ihrer App:
Sie können einen StorageFolder abrufen, der das Installationsverzeichnis Ihrer App wie folgt darstellt:
Windows.Storage.StorageFolder installedLocation = Windows.ApplicationModel.Package.Current.InstalledLocation;#include <winrt/Windows.Storage.h> ... Windows::Storage::StorageFolder installedLocation{ Windows::ApplicationModel::Package::Current().InstalledLocation() };Anschließend können Sie mithilfe von StorageFolder-Methoden auf Dateien und Ordner im Verzeichnis zugreifen. Im Beispiel wird dieser StorageFolder in der
installDirectoryVariablen gespeichert. Weitere Informationen zum Arbeiten mit Ihrem App-Paket und zum Installieren des Verzeichnisses finden Sie im App-Paketinformationsbeispiel auf GitHub.Sie können eine Datei direkt aus dem Installationsverzeichnis Ihrer App abrufen, indem Sie einen App-URI wie folgt verwenden:
using Windows.Storage; StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///file.txt"));Windows::Foundation::IAsyncAction ExampleCoroutineAsync() { Windows::Storage::StorageFile file{ co_await Windows::Storage::StorageFile::GetFileFromApplicationUriAsync(Windows::Foundation::Uri{L"ms-appx:///file.txt"}) }; // Process file }Wenn GetFileFromApplicationUriAsync abgeschlossen ist, wird eine StorageFile zurückgegeben, die die Datei im Installationsverzeichnis der
file.txtApp darstellt (fileim Beispiel).Das Präfix "ms-appx:///" im URI bezieht sich auf das Installationsverzeichnis der App. Weitere Informationen über die Verwendung von App-URIs finden Sie unter Verwendung von URIs zum Verweisen auf Inhalte.
Darüber hinaus können Sie im Gegensatz zu anderen Speicherorten auch auf Dateien in Ihrem App-Installationsverzeichnis zugreifen, indem Sie einige Win32- und COM für WinUI-Apps und einige C/C++-Standardbibliotheksfunktionen von Microsoft Visual Studio verwenden.
Das Installationsverzeichnis der App ist ein nur lesbarer Speicherort. Sie können nicht über die Dateiauswahl auf das Installationsverzeichnis zugreifen.
Zugreifen auf Anwendungsdatenspeicherorte
Die Ordner, in denen Ihre App Daten speichern kann. Diese Ordner (lokal, roaming und temporär) werden erstellt, wenn Ihre App installiert wird.
Es gibt zwei Hauptmethoden für den Zugriff auf Dateien und Ordner aus den Datenspeicherorten Ihrer App:
Verwenden Sie ApplicationData-Eigenschaften , um einen App-Datenordner abzurufen.
Beispielsweise können Sie ApplicationData verwenden. LocalFolder , um einen StorageFolder abzurufen, der den lokalen Ordner Ihrer App wie folgt darstellt:
using Windows.Storage; StorageFolder localFolder = ApplicationData.Current.LocalFolder;Windows::Storage::StorageFolder storageFolder{ Windows::Storage::ApplicationData::Current().LocalFolder() };Wenn Sie auf den Roaming- oder temporären Ordner Ihrer App zugreifen möchten, verwenden Sie stattdessen die Eigenschaft "RoamingFolder " oder "TemporaryFolder ".
Nachdem Sie einen StorageFolder abgerufen haben , der einen App-Datenspeicherort darstellt, können Sie mithilfe von StorageFolder-Methoden auf Dateien und Ordner an diesem Speicherort zugreifen. Im Beispiel werden diese StorageFolder-Objekte in der
localFolderVariablen gespeichert. Weitere Informationen zur Verwendung von App-Datenspeicherorten finden Sie über die Anleitung auf der ApplicationData-Klassenseite und laden das Anwendungsdatenbeispiel von GitHub herunter.Sie können eine Datei direkt aus dem lokalen Ordner Ihrer App abrufen, indem Sie einen App-URI wie folgt verwenden:
using Windows.Storage; StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appdata:///local/file.txt"));Windows::Storage::StorageFile file{ co_await Windows::Storage::StorageFile::GetFileFromApplicationUriAsync(Windows::Foundation::Uri{ L"ms-appdata:///local/file.txt" }) }; // Process fileWenn GetFileFromApplicationUriAsync abgeschlossen ist, wird eine StorageFile zurückgegeben, die die Datei im lokalen Ordner der
file.txtApp darstellt (fileim Beispiel).Das Präfix "ms-appdata:///local/" im URI bezieht sich auf den lokalen Ordner der App. Um auf Dateien im Roaming oder temporäre Ordner der App zuzugreifen, verwenden Sie stattdessen "ms-appdata:///roaming/" oder "ms-appdata:///temporary/". Weitere Informationen zur Verwendung von App-URIs finden Sie unter "Laden von Dateiressourcen".
Darüber hinaus können Sie im Gegensatz zu anderen Speicherorten auch auf Dateien in Ihren App-Datenspeicherorten zugreifen, indem Sie einige Win32- und COM für WinUI-Apps und einige C/C++-Standardbibliotheksfunktionen aus Visual Studio verwenden.
Sie können nicht über die Dateiauswahl auf die lokalen, Roaming- oder temporären Ordner zugreifen.
Zugreifen auf Wechselmedien
Darüber hinaus kann Ihre App standardmäßig auf einige dateien auf verbundenen Geräten zugreifen. Dies ist eine Option, wenn Ihre App die Erweiterung für die automatische Wiedergabe (AutoPlay) verwendet, um automatisch zu starten, wenn Benutzer ein Gerät wie eine Kamera oder einen USB-Stick mit ihrem System verbinden. Die Dateien, auf die Ihre App zugreifen kann, sind auf bestimmte Dateitypen beschränkt, die über Dateitypzuordnungsdeklarationen im App-Manifest angegeben werden.
Natürlich können Sie auch Zugriff auf Dateien und Ordner auf einem Wechselmedium erhalten, indem Sie die Dateiauswahl (mithilfe von FileOpenPicker und FolderPicker) aufrufen und dem Benutzer die Auswahl von Dateien und Ordnern für Ihre App ermöglichen. Erfahren Sie, wie Sie die Dateiauswahl im Bereich "Dateien und Ordner mit einem Auswahlwerkzeug öffnen" verwenden.
Hinweis
Weitere Informationen zum Zugriff auf eine SD-Karte oder andere Wechselmedien finden Sie unter Access the SD card.
Ordner "Downloads" des Benutzers
Der Ordner, in dem heruntergeladene Dateien standardmäßig gespeichert werden.
Standardmäßig kann Ihre App nur auf Dateien und Ordner im Ordner "Downloads" des Benutzers zugreifen, den Ihre App erstellt hat. Sie können jedoch Zugriff auf Dateien und Ordner im Ordner "Downloads" des Benutzers erhalten, indem Sie eine Dateiauswahl (FileOpenPicker oder FolderPicker) aufrufen, damit Benutzer in Dateien oder Ordnern navigieren und auswählen können, auf die Ihre App zugreifen kann.
Sie können eine Datei wie folgt im Ordner "Downloads" des Benutzers erstellen:
using Windows.Storage; StorageFile newFile = await DownloadsFolder.CreateFileAsync("file.txt");Windows::Storage::StorageFile newFile{ co_await Windows::Storage::DownloadsFolder::CreateFileAsync(L"file.txt") }; // Process fileDownloadsFolder. CreateFileAsync ist überladen, sodass Sie angeben können, was das System tun soll, wenn bereits eine Datei im Ordner "Downloads" vorhanden ist, die denselben Namen hat. Nach Abschluss dieser Methoden geben sie eine StorageFile zurück, die die erstellte Datei darstellt. Diese Datei wird im Beispiel
newFilegenannt.Sie können einen Unterordner im Ordner "Downloads" des Benutzers wie folgt erstellen:
using Windows.Storage; StorageFolder newFolder = await DownloadsFolder.CreateFolderAsync("New Folder");Windows::Storage::StorageFolder newFolder{ co_await Windows::Storage::DownloadsFolder::CreateFolderAsync(L"New Folder") }; // Process folderDownloadsFolder. CreateFolderAsync ist überladen, sodass Sie angeben können, was das System tun soll, wenn bereits ein Unterordner im Ordner "Downloads" vorhanden ist, der denselben Namen hat. Nach Abschluss dieser Methoden geben sie einen StorageFolder zurück, der den erstellten Unterordner darstellt. Diese Datei wird im Beispiel
newFoldergenannt.
Zugreifen auf zusätzliche Speicherorte
Zusätzlich zu den Standardspeicherorten kann eine App auf zusätzliche Dateien und Ordner zugreifen, indem Sie Funktionen im App-Manifest deklarieren oder eine Dateiauswahl aufrufen , damit der Benutzer Dateien und Ordner für die App auswählen kann.
Apps, die die Erweiterung AppExecutionAlias deklarieren, verfügen über Dateisystemberechtigungen aus dem Verzeichnis, aus dem sie im Konsolenfenster und nach unten gestartet werden.
Beibehalten des Zugriffs auf Dateien und Ordner
Wenn Ihre App eine Datei oder einen Ordner über eine Auswahl, eine Dateiaktivierung, einen Drag-and-Drop-Vorgang usw. abruft, hat sie nur Zugriff auf diese Datei oder diesen Ordner, bis die App beendet wird. Wenn Sie zukünftig automatisch auf die Datei oder den Ordner zugreifen möchten, können Sie sie der FutureAccessList hinzufügen, damit Ihre App in Zukunft problemlos auf dieses Element zugreifen kann. Sie können auch die MostRecentlyUsedList verwenden, um eine Liste der zuletzt verwendeten Dateien auf einfache Weise zu verwalten.
Funktionen für den Zugriff auf andere Speicherorte
In der folgenden Tabelle sind weitere Speicherorte aufgeführt, auf die Sie zugreifen können, indem Sie eine oder mehrere Funktionen deklarieren und die zugeordnete Windows.Storage-API verwenden.
| Ort | Fähigkeit | Windows.Storage API |
|---|---|---|
| Alle Dateien, auf die der Benutzer zugreifen kann. Beispiel: Dokumente, Bilder, Fotos, Downloads, Desktop, OneDrive usw. | umfassender Dateisystemzugriff Dies ist eine eingeschränkte Funktion. Der Zugriff kann in den Einstellungen > Datenschutz >Dateisystem konfiguriert werden. Weil Benutzer die Berechtigung in „Einstellungen“ jederzeit gewähren oder verweigern können, solltest du sicherstellen, dass deine App auf diese Änderungen flexibel reagiert. Wenn Sie feststellen, dass Ihre App keinen Zugriff hat, können Sie den Benutzer auffordern, die Einstellung zu ändern, indem Sie einen Link zum Windows-Dateisystemzugriffs- und Datenschutzartikel bereitstellen. Beachten Sie, dass der Benutzer die App schließen, die Einstellung umschalten und die App neu starten muss. Wenn Sie die Einstellung während der Ausführung der App umschalten, hält die Plattform Ihre App an, damit Sie den Zustand speichern können, und beendet die App dann zwangsweise, um die neue Einstellung anzuwenden. Im Update vom April 2018 lautet die Standardeinstellung für die Berechtigung „Ein“. Im Update vom Oktober 2018 lautet sie „Aus“. Wenn Sie eine App an den Store übermitteln, die diese Funktion deklariert, müssen Sie zusätzliche Beschreibungen angeben, warum Ihre App diese Funktion benötigt und wie sie verwendet werden soll. Diese Funktion funktioniert für APIs im Windows.Storage-Namespace . Ein Beispiel für die Aktivierung dieser Funktion in Ihrer App finden Sie im Abschnitt "Beispiel" am Ende dieses Artikels. Hinweis: Diese Funktion wird auf Xbox nicht unterstützt. |
n/a |
| Dokumente | Dokumentenbibliothek Hinweis: Sie müssen Ihrem App-Manifest Dateitypzuordnungen hinzufügen, die bestimmte Dateitypen deklarieren, auf die Ihre App an diesem Speicherort zugreifen kann. Verwenden Sie diese Funktion, wenn Ihre App: – Erleichtert den plattformübergreifenden Offlinezugriff auf bestimmte OneDrive-Inhalte mithilfe gültiger OneDrive-URLs oder Ressourcen-IDs. – Speichert geöffnete Dateien automatisch im Offlinemodus auf dem OneDrive des Benutzers. |
KnownFolders.DocumentsLibrary |
| Musik | Musikbibliothek Siehe auch Dateien und Ordner in den Musik-, Bild- und Videobibliotheken. |
KnownFolders.MusicLibrary |
| Bilder | Bilderbibliothek Siehe auch Dateien und Ordner in den Musik-, Bild- und Videobibliotheken. |
KnownFolders.PicturesLibrary |
| Videoaufnahmen | Video-Bibliothek Siehe auch Dateien und Ordner in den Musik-, Bild- und Videobibliotheken. |
KnownFolders.VideosLibrary |
| Wechselmedien | Wechselbarer Speicher Hinweis: Sie müssen Ihrem App-Manifest Dateitypzuordnungen hinzufügen, die bestimmte Dateitypen deklarieren, auf die Ihre App an diesem Speicherort zugreifen kann. Siehe auch Access the SD card. |
KnownFolders.RemovableDevices |
| Heimnetzgruppenbibliotheken | Mindestens eine der folgenden Funktionen ist erforderlich. - musicLibrary - picturesLibrary - Video-Bibliothek |
KnownFolders.HomeGroup |
| Medienservergeräte (DLNA) | Mindestens eine der folgenden Funktionen ist erforderlich. - musicLibrary - picturesLibrary - Video-Bibliothek |
KnownFolders.MediaServerDevices |
| Ordner der universellen Namenskonvention (UNC) | Es ist eine Kombination der folgenden Funktionen erforderlich. Die Funktion für Heim- und Arbeitsnetzwerke: - privateNetworkClientServer Und mindestens eine Internet- und öffentliche Netzwerkfunktion: - internetClient - internetClientServer Und gegebenenfalls die Funktion für Domänenanmeldedaten: - enterpriseAuthentication Hinweis: Sie müssen Ihrem App-Manifest Dateitypzuordnungen hinzufügen, die bestimmte Dateitypen deklarieren, auf die Ihre App an diesem Speicherort zugreifen kann. |
Abrufen eines Ordners mithilfe von: StorageFolder.GetFolderFromPathAsync Abrufen einer Datei mithilfe von: StorageFile.GetFileFromPathAsync |
Beispiel
In diesem Beispiel wird die eingeschränkte broadFileSystemAccess-Funktion hinzugefügt. Zusätzlich zur Angabe der Fähigkeit muss der rescap-Namespace hinzugefügt werden und wird auch zu IgnorableNamespaces hinzugefügt.
<Package
...
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="uap mp rescap">
...
<Capabilities>
<rescap:Capability Name="broadFileSystemAccess" />
</Capabilities>
Hinweis
Eine vollständige Liste der App-Funktionen finden Sie unter App-Funktionsdeklarationen.
Windows developer