Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
UWP-apps (Universal Windows Platform) hebben standaard toegang tot bepaalde bestandssysteemlocaties. Apps hebben ook toegang tot extra locaties via de bestandskiezer of door mogelijkheden te declareren.
Locaties waartoe UWP-apps toegang hebben
Wanneer u een nieuwe app maakt, hebt u standaard toegang tot de volgende bestandssysteemlocaties:
Installatiemap van de applicatie
De map waarin uw app is geïnstalleerd op het systeem van de gebruiker.
Er zijn twee primaire manieren om toegang te krijgen tot bestanden en mappen in de installatiemap van uw app:
U kunt een StorageFolder- ophalen die de installatiemap van uw app vertegenwoordigt, zoals deze:
Windows.Storage.StorageFolder installedLocation = Windows.ApplicationModel.Package.Current.InstalledLocation;var installDirectory = Windows.ApplicationModel.Package.current.installedLocation;#include <winrt/Windows.Storage.h> ... Windows::Storage::StorageFolder installedLocation{ Windows::ApplicationModel::Package::Current().InstalledLocation() };Windows::Storage::StorageFolder^ installedLocation = Windows::ApplicationModel::Package::Current->InstalledLocation;Vervolgens kunt u bestanden en mappen in de map openen met behulp van StorageFolder methoden. In het voorbeeld wordt deze StorageFolder- opgeslagen in de variabele
installDirectory. Op GitHub kunt u in het voorbeeld van app-pakketinformatie meer te weten komen over het werken met uw app-pakket en de installatiemap.U kunt een bestand rechtstreeks ophalen uit de installatiemap van uw app met behulp van een app-URI, zoals deze:
using Windows.Storage; StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///file.txt"));Windows.Storage.StorageFile.getFileFromApplicationUriAsync("ms-appx:///file.txt").done( function(file) { // Process file } );Windows::Foundation::IAsyncAction ExampleCoroutineAsync() { Windows::Storage::StorageFile file{ co_await Windows::Storage::StorageFile::GetFileFromApplicationUriAsync(Windows::Foundation::Uri{L"ms-appx:///file.txt"}) }; // Process file }auto getFileTask = create_task(StorageFile::GetFileFromApplicationUriAsync(ref new Uri("ms-appx:///file.txt"))); getFileTask.then([](StorageFile^ file) { // Process file });Wanneer GetFileFromApplicationUriAsync is voltooid, wordt een StorageFile- geretourneerd die het
file.txtbestand in de installatiemap van de app vertegenwoordigt (filein het voorbeeld).Het voorvoegsel ms-appx:///in de URI verwijst naar de installatiemap van de app. Meer informatie over het gebruik van app-URI's vindt u in URI's gebruiken om te verwijzen naar inhoud.
Bovendien kunt u, in tegenstelling tot andere locaties, ook toegang krijgen tot bestanden in uw app-installatiemap met behulp van sommige Win32- en COM voor UWP-apps (Universal Windows Platform) en enkele C/C++ Standard Library-functies van Microsoft Visual Studio.
De installatiemap van de app is een alleen-lezen locatie. U kunt geen toegang krijgen tot de installatiemap via de bestandskiezer.
Toegang tot toepassingsgegevenslocaties
De mappen waarin uw app gegevens kan opslaan. Deze mappen (lokaal, roaming en tijdelijk) worden gemaakt wanneer uw app is geïnstalleerd.
Er zijn twee primaire manieren om toegang te krijgen tot bestanden en mappen vanaf de gegevenslocaties van uw app:
Gebruik ApplicationData eigenschappen om een app-gegevensmap op te halen.
U kunt bijvoorbeeld ApplicationData-gebruiken.LocalFolder om een StorageFolder- op te halen die de lokale map van uw app als volgt vertegenwoordigt:
using Windows.Storage; StorageFolder localFolder = ApplicationData.Current.LocalFolder;var localFolder = Windows.Storage.ApplicationData.current.localFolder;Windows::Storage::StorageFolder storageFolder{ Windows::Storage::ApplicationData::Current().LocalFolder() };using namespace Windows::Storage; StorageFolder^ storageFolder = ApplicationData::Current->LocalFolder;Als u de roaming- of tijdelijke map van uw app wilt openen, gebruik dan de eigenschap RoamingFolder of TemporaryFolder.
Nadat u een StorageFolder- hebt opgehaald die een app-gegevenslocatie vertegenwoordigt, hebt u toegang tot bestanden en mappen op die locatie met behulp van StorageFolder methoden. In het voorbeeld worden deze StorageFolder--objecten opgeslagen in de variabele
localFolder. Meer informatie over het gebruik van app-gegevenslocaties vindt u in de richtlijnen op de ApplicationData-klasse pagina en door het voorbeeld van toepassingsgegevens te downloaden vanuit GitHub.U kunt een bestand rechtstreeks ophalen uit de lokale map van uw app met behulp van een app-URI, zoals deze:
using Windows.Storage; StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appdata:///local/file.txt"));Windows.Storage.StorageFile.getFileFromApplicationUriAsync("ms-appdata:///local/file.txt").done( function(file) { // Process file } );Windows::Storage::StorageFile file{ co_await Windows::Storage::StorageFile::GetFileFromApplicationUriAsync(Windows::Foundation::Uri{ L"ms-appdata:///local/file.txt" }) }; // Process fileusing Windows::Storage; auto getFileTask = create_task(StorageFile::GetFileFromApplicationUriAsync(ref new Uri("ms-appdata:///local/file.txt"))); getFileTask.then([](StorageFile^ file) { // Process file });Wanneer GetFileFromApplicationUriAsync voltooid, wordt een StorageFile- geretourneerd die het
file.txtbestand in de lokale map van de app vertegenwoordigt (filein het voorbeeld).Het voorvoegsel ms-appdata:///local/in de URI verwijst naar de lokale map van de app. Als u toegang wilt krijgen tot bestanden in de roaming- of tijdelijke mappen van de app, gebruikt u in plaats daarvan "ms-appdata:///roaming/" of "ms-appdata:///temporary/". Meer informatie over het gebruik van app-URI's vindt u in Het laden van bestandsresources.
Daarnaast kunt u, in tegenstelling tot andere locaties, ook toegang krijgen tot bestanden in uw app-gegevenslocaties met behulp van een aantal Win32- en COM voor UWP-apps en sommige C/C++ Standard Library-functies van Visual Studio.
U hebt geen toegang tot de lokale, zwervende of tijdelijke mappen via de bestandskiezer.
Toegang tot verwisselbare apparaten
Daarnaast heeft uw app standaard toegang tot een aantal bestanden op verbonden apparaten. Dit is een optie als uw app gebruikmaakt van de AutoPlay-extensie automatisch te starten wanneer gebruikers een apparaat, zoals een camera of USB-duimstation, aansluiten op hun systeem. De bestanden waartoe uw app toegang heeft, zijn beperkt tot specifieke bestandstypen die zijn opgegeven via declaraties van bestandstypekoppelingen in uw app-manifest.
Natuurlijk kunt u ook toegang krijgen tot bestanden en mappen op een verwisselbaar apparaat door de bestandskiezer aan te roepen (met behulp van FileOpenPicker en FolderPicker) en de gebruiker bestanden en mappen te laten kiezen voor uw app. Meer informatie over het gebruik van de bestandskiezer in Bestanden en mappen openen met een kiezer.
Opmerking
Zie Toegang tot de SD-kaartvoor meer informatie over het openen van een SD-kaart of andere verwisselbare apparaten.
De Downloadmap van de gebruiker
De map waarin gedownloade bestanden standaard worden opgeslagen.
Uw app heeft standaard alleen toegang tot bestanden en mappen in de map Downloads van de gebruiker die uw app heeft gemaakt. U kunt echter toegang krijgen tot bestanden en mappen in de map Downloads van de gebruiker door een bestandskiezer aan te roepen (FileOpenPicker of FolderPicker) zodat gebruikers kunnen navigeren en bestanden of mappen kunnen kiezen voor toegang tot uw app.
U kunt als volgt een bestand maken in de map Downloads van de gebruiker:
using Windows.Storage; StorageFile newFile = await DownloadsFolder.CreateFileAsync("file.txt");Windows.Storage.DownloadsFolder.createFileAsync("file.txt").done( function(newFile) { // Process file } );Windows::Storage::StorageFile newFile{ co_await Windows::Storage::DownloadsFolder::CreateFileAsync(L"file.txt") }; // Process fileusing Windows::Storage; auto createFileTask = create_task(DownloadsFolder::CreateFileAsync(L"file.txt")); createFileTask.then([](StorageFile^ newFile) { // Process file });DownloadsFolder-.CreateFileAsync- overbelast is, zodat u kunt opgeven wat het systeem moet doen als er al een bestaand bestand in de map Downloads met dezelfde naam staat. Wanneer deze methoden zijn voltooid, retourneren ze een StorageFile- die het bestand vertegenwoordigt dat is gemaakt. Dit bestand wordt
newFilegenoemd in het voorbeeld.U kunt als volgt een submap maken in de map Downloads van de gebruiker:
using Windows.Storage; StorageFolder newFolder = await DownloadsFolder.CreateFolderAsync("New Folder");Windows.Storage.DownloadsFolder.createFolderAsync("New Folder").done( function(newFolder) { // Process folder } );Windows::Storage::StorageFolder newFolder{ co_await Windows::Storage::DownloadsFolder::CreateFolderAsync(L"New Folder") }; // Process folderusing Windows::Storage; auto createFolderTask = create_task(DownloadsFolder::CreateFolderAsync(L"New Folder")); createFolderTask.then([](StorageFolder^ newFolder) { // Process folder });DownloadsFolder-.CreateFolderAsync- overbelast is, zodat u kunt opgeven wat het systeem moet doen als er al een bestaande submap in de map Downloads met dezelfde naam staat. Wanneer deze methoden zijn voltooid, retourneren ze een StorageFolder- die de submap vertegenwoordigt die is gemaakt. Dit bestand wordt
newFoldergenoemd in het voorbeeld.
Toegang tot extra locaties
Naast de standaardlocaties heeft een app toegang tot extra bestanden en mappen door mogelijkheden te declareren in het app-manifest of door een bestandskiezer aan te roepen om de gebruiker bestanden en mappen te laten kiezen voor toegang tot de app.
Apps die de AppExecutionAlias extensie declareren, hebben machtigingen voor het bestandssysteem van de map waaruit ze worden gestart in het consolevenster en omlaag.
Toegang tot bestanden en mappen behouden
Wanneer uw app een bestand of map ophaalt via een kiezer, een bestandsactivering, een bewerking voor slepen en neerzetten, enzovoort, heeft deze alleen toegang tot dat bestand of die map totdat de app is beëindigd. Als u in de toekomst automatisch toegang wilt krijgen tot het bestand of de map, kunt u het toevoegen aan de FutureAccessList-, zodat uw app in de toekomst gemakkelijk toegang heeft tot dat item. U kunt ook de MostRecentlyUsedList gebruiken om eenvoudig een lijst met recent gebruikte bestanden te beheren.
Mogelijkheden voor toegang tot andere locaties
De volgende tabel bevat aanvullende locaties waartoe u toegang hebt door een of meer mogelijkheden te declareren en de bijbehorende Windows.Storage-API te gebruiken.
| Locatie | Vermogen | Windows.Storage-API |
|---|---|---|
| Alle bestanden waartoe de gebruiker toegang heeft. Bijvoorbeeld: documenten, afbeeldingen, foto's, downloads, bureaublad, OneDrive, enzovoort. |
BredeToegangTotBestandssysteem Dit is een beperkte mogelijkheid. Access kan worden geconfigureerd in Instellingen>Privacy>Bestandssysteem. Omdat gebruikers de machtiging op elk gewenst moment in Instellingenkunnen verlenen of weigeren, moet u ervoor zorgen dat uw app bestand is tegen deze wijzigingen. Als u merkt dat uw app geen toegang heeft, kunt u ervoor kiezen om de gebruiker te vragen de instelling te wijzigen door een koppeling naar het toegangs- en privacyartikel voor het Windows-bestandssysteem op te geven. Houd er rekening mee dat de gebruiker de app moet sluiten, de instelling moet in- of uitschakelen en de app opnieuw moet starten. Als ze de instelling in-/uitschakelen terwijl de app wordt uitgevoerd, wordt uw app door het platform onderbroken, zodat u de status kunt opslaan en vervolgens de app geforceerd beëindigt om de nieuwe instelling toe te passen. In de update van april 2018 is de standaardwaarde voor de machtiging Ingeschakeld. In de update van oktober 2018 is de standaardwaarde uitgeschakeld. Als u een app indient in de Store die deze mogelijkheid declareert, moet u aanvullende beschrijvingen opgeven van de reden waarom uw app deze mogelijkheid nodig heeft en hoe de app deze wil gebruiken. Deze mogelijkheid werkt voor API's in de Windows.Storage naamruimte. Zie de sectie Voorbeeld aan het einde van dit artikel voor een voorbeeld van het inschakelen van deze mogelijkheid in uw app. Opmerking: Deze mogelijkheid wordt niet ondersteund op Xbox. |
n.v.t |
| Documenten |
documentenbibliotheek Opmerking: U moet bestandstypeassociaties toevoegen aan uw app-manifest die specifieke bestandstypen declareren waartoe uw app toegang heeft op deze locatie. Gebruik deze mogelijkheid als uw app: - Vereenvoudigt platformoverschrijdende offlinetoegang tot specifieke OneDrive-inhoud met behulp van geldige OneDrive-URL's of resource-id's - Hiermee worden geopende bestanden automatisch opgeslagen in OneDrive van de gebruiker terwijl deze offline is |
BekendeMappen.DocumentenBibliotheek |
| Muziek |
musicLibrary Zie ook bestanden en mappen in de bibliotheken Muziek, Afbeeldingen en Video's. |
KnownFolders.MusicLibrary |
| Foto 's |
picturesLibrary - Zie ook bestanden en mappen in de bibliotheken Muziek, Afbeeldingen en Video's. |
KnownFolders.PicturesLibrary |
| Video's |
videosLibrary- Zie ook bestanden en mappen in de bibliotheken Muziek, Afbeeldingen en Video's. |
BekendeMappen.Videobibliotheek |
| Verwisselbare apparaten |
verwisselbare opslag Opmerking: U moet bestandsassociaties aan uw app-manifest toevoegen die specifieke bestandstypen verklaren waartoe uw app toegang heeft op deze locatie. Zie ook Toegang tot de SD-kaart. |
KnownFolders.RemovableDevices |
| Thuisgroepbibliotheken | Er is ten minste één van de volgende mogelijkheden nodig. - muziekbibliotheek - afbeeldingenBibliotheek - videobibliotheek |
BekendeMappen.Thuisgroep |
| Mediaserverapparaten (DLNA) | Er is ten minste één van de volgende mogelijkheden nodig. - muziekbibliotheek - afbeeldingenBibliotheek - videobibliotheek |
KnownFolders.MediaServerDevices |
| UNC-mappen (Universal Naming Convention) | Er is een combinatie van de volgende mogelijkheden nodig. De mogelijkheid voor thuis- en werknetwerken: - privaatNetwerkClientServer En ten minste één mogelijkheid tot internet en openbare netwerken: - internetClient - internetClientServer En, indien van toepassing, de mogelijkheid voor domeinreferenties: - bedrijfsauthenticatie Opmerking: U moet Bestandstypeassociaties toevoegen aan het app-manifest waarmee specifieke bestandstypen worden gespecificeerd waartoe uw app toegang heeft op deze locatie. |
Een map ophalen met behulp van: StorageFolder.GetFolderFromPathAsync - Haal een bestand op met behulp van: StorageFile.GetFileFromPathAsync |
Voorbeeld
In dit voorbeeld worden de beperkte broadFileSystemAccess- mogelijkheid toegevoegd. Naast het specificeren van de functionaliteit moet de rescap-naamruimte worden toegevoegd en ook aan IgnorableNamespacesworden toegevoegd.
<Package
...
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="uap mp rescap">
...
<Capabilities>
<rescap:Capability Name="broadFileSystemAccess" />
</Capabilities>
Opmerking
Zie App-declaratiesvoor een volledige lijst met app-mogelijkheden.