Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Aplikace univerzální platformy Windows (UPW) mají ve výchozím nastavení přístup k určitým umístěním systému souborů. Aplikace můžou také přistupovat k dalším umístěním prostřednictvím nástroje pro výběr souborů nebo deklarací možností.
Umístění, ke kterým mají aplikace pro UPW přístup
Při vytváření nové aplikace můžete ve výchozím nastavení přistupovat k následujícím umístěním systému souborů:
Instalační adresář aplikace
Složka, ve které je aplikace nainstalovaná v systému uživatele.
Existují dva primární způsoby přístupu k souborům a složkám v instalačním adresáři vaší aplikace:
Můžete načíst StorageFolder, který představuje instalační adresář vaší aplikace, a to například takto:
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;K souborům a složkám v adresáři pak můžete přistupovat pomocí metod StorageFolder . V tomto příkladu je tento StorageFolder uložen v
installDirectoryproměnné. Další informace o práci s balíčkem aplikace a instalaci adresáře najdete v ukázce informací o balíčku aplikace na GitHubu.Soubor můžete načíst přímo z instalačního adresáře aplikace pomocí identifikátoru URI aplikace, například takto:
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 });Po dokončení GetFileFromApplicationUriAsync se vrátí StorageFile, který představuje soubor
file.txtv instalačním adresáři aplikace (filev příkladu).Předpona ms-appx:///v identifikátoru URI odkazuje na instalační adresář aplikace. Další informace o používání URI aplikací najdete v Jak používat URI k odkazování na obsah.
Kromě toho a na rozdíl od jiných umístění můžete přistupovat k souborům v instalačním adresáři vaší aplikace pomocí některých prostředků Win32 a COM pro aplikace pro Universal Windows Platform (UWP) a také některých funkcí standardní knihovny jazyka C/C++ z Microsoft Visual Studio.
Instalační adresář aplikace je umístění jen pro čtení. Přístup k instalačnímu adresáři nemůžete získat prostřednictvím nástroje pro výběr souborů.
Přístup k umístěním dat aplikací
Složky, do kterých může aplikace ukládat data. Tyto složky (místní, roaming a dočasné) se vytvoří při instalaci vaší aplikace.
Existují dva primární způsoby přístupu k souborům a složkám z umístění dat vaší aplikace:
Pomocí vlastností ApplicationData načtěte složku dat aplikace.
Můžete například použít ApplicationData.LocalFolder k načtení StorageFolder, která představuje místní složku vaší aplikace, například takto:
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;Pokud chcete získat přístup k roamingové nebo dočasné složce aplikace, použijte místo toho vlastnost RoamingFolder nebo TemporaryFolder.
Po načtení StorageFolder , který představuje umístění dat aplikace, můžete přistupovat k souborům a složkám v daném umístění pomocí metod StorageFolder . V tomto příkladu jsou tyto objekty StorageFolder uloženy v
localFolderproměnné. Další informace o používání umístění dat aplikací najdete v pokynech na stránce třídy ApplicationData a stažením ukázky dat aplikace z GitHubu.Soubor můžete načíst přímo z místní složky aplikace pomocí identifikátoru URI aplikace, například takto:
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 });Když
dokončí, vrátíGetFileFromApplicationUriAsync StorageFile, který představuje soubor v místní složce aplikace ( v příkladu). Předpona "ms-appdata:///local/" v identifikátoru URI odkazuje na místní složku aplikace. Pokud chcete získat přístup k souborům v roamingu nebo dočasných složkách aplikace, použijte místo toho příkaz ms-appdata:///roaming/nebo ms-appdata:///temporary/. Další informace o používání identifikátorů URI aplikací najdete v tématu Jak načíst prostředky souborů.
Kromě toho, na rozdíl od jiných umístění, můžete také přistupovat k souborům v umístěních dat vaší aplikace pomocí některých funkcí Win32 a COM pro UWP aplikace a některých funkcí standardní knihovny C/C++ ze sady Visual Studio.
Prostřednictvím nástroje pro výběr souborů nemůžete získat přístup k místním, roamingovým nebo dočasným složkám.
Přístup k vyměnitelným zařízením
Kromě toho může vaše aplikace ve výchozím nastavení přistupovat k některým souborům na připojených zařízeních. Toto je možnost, pokud vaše aplikace používá rozšíření Automatické přehrávání k automatickému spuštění, když uživatelé připojí zařízení, jako je fotoaparát nebo usb flash disk, k systému. Soubory, ke kterým má vaše aplikace přístup, jsou omezené na konkrétní typy souborů, které jsou zadané prostřednictvím deklarací přidružení typů souborů v manifestu aplikace.
Samozřejmě můžete také získat přístup k souborům a složkám na vyměnitelném zařízení voláním nástroje pro výběr souborů (pomocí FileOpenPickeru a FolderPickeru) a umožnit uživateli vybrat soubory a složky pro přístup k vaší aplikaci. Naučte se používat výběr souborů v a otevírat soubory a složky pomocí výběru.
Poznámka:
Další informace o přístupu k kartě SD nebo jiným vyměnitelným zařízením najdete v tématu Přístup k kartě SD.
Složka Stažené soubory uživatele
Složka, do které se stahované soubory ukládají ve výchozím nastavení.
Ve výchozím nastavení může vaše aplikace přistupovat jenom k souborům a složkám ve složce Stažené soubory uživatele, kterou vaše aplikace vytvořila. Přístup k souborům a složkám ve složce Stažené soubory uživatele ale můžete získat voláním nástroje pro výběr souborů (FileOpenPicker nebo FolderPicker), aby uživatelé mohli procházet a vybírat soubory nebo složky, ke kterým má vaše aplikace přístup.
Soubor můžete vytvořit ve složce Stažené soubory uživatele takto:
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 je přetížen, takže můžete určit, co má systém dělat, pokud již existuje existující soubor ve složce Stažené soubory se stejným názvem. Po dokončení těchto metod vrátí StorageFile , který představuje soubor, který byl vytvořen. Tento soubor je v příkladu nazýván
newFile.Podsložku můžete vytvořit ve složce Stažené soubory uživatele takto:
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 je přetížen, takže můžete určit, co má systém dělat, pokud už existuje existující podsložka ve složce Stažené soubory se stejným názvem. Po dokončení těchto metod vrátí StorageFolder , který představuje podsložku, která byla vytvořena. Tento soubor je v příkladu nazýván
newFolder.
Přístup k dalším umístěním
Kromě výchozích umístění může aplikace přistupovat k dalším souborům a složkám tím, že deklaruje schopnosti v manifestu aplikace nebo zavolá výběr souborů, aby uživatel mohl vybrat soubory a složky, ke kterým má aplikace přistupovat.
Aplikace, které deklarují Rozšíření AppExecutionAlias mají oprávnění systému souborů z adresáře, který se spouští v okně konzoly, a dolů.
Zachování přístupu k souborům a složkám
Když vaše aplikace načte soubor nebo složku pomocí nástroje pro výběr, aktivaci souboru, operaci přetažení atd. má přístup k danému souboru nebo složce, dokud se aplikace neukončí. Pokud chcete v budoucnu automaticky získat přístup k souboru nebo složce, můžete ho přidat do seznamu FutureAccessList , aby vaše aplikace v budoucnu k této položce snadno přistupovala. Seznam naposledy použitých souborů můžete také snadno spravovat pomocí seznamu MostRecentlyUsedList .
Možnosti pro přístup k jiným umístěním
Následující tabulka uvádí další umístění, ke kterým můžete přistupovat deklarováním jedné nebo více funkcí a použitím přidruženého rozhraní WINDOWS.Storage API.
| Umístění | Schopnost | Windows.Storage API (rozhraní pro úložiště ve Windows) |
|---|---|---|
| Všechny soubory, ke kterým má uživatel přístup. Například: dokumenty, obrázky, fotky, soubory ke stažení, plocha, OneDrive atd. |
broadFileSystemAccess Toto je omezená schopnost. Přístup lze nastavit v Nastavení>Ochrana osobních údajů>Systém souborů. Vzhledem k tomu, že uživatelé můžou oprávnění kdykoli udělit nebo odepřít v Nastavení, měli byste zajistit, aby vaše aplikace byla odolná vůči těmto změnám. Pokud zjistíte, že vaše aplikace nemá přístup, můžete požádat uživatele, aby změnil nastavení zadáním odkazu na přístup k systému souborů Windows a článek o ochraně osobních údajů . Všimněte si, že uživatel musí aplikaci zavřít, přepnout nastavení a restartovat aplikaci. Pokud přepnou nastavení, když je aplikace spuštěná, platforma pozastaví vaši aplikaci, abyste mohli uložit stav, a pak vynuceně ukončete aplikaci, aby se použilo nové nastavení. V aktualizaci z dubna 2018 je výchozí hodnota oprávnění zapnutá. V aktualizaci z října 2018 je výchozí hodnota vypnutá. Pokud odešlete aplikaci do Storu, která tuto funkci deklaruje, budete muset zadat další popisy, proč vaše aplikace tuto funkci potřebuje a jak ji hodlá používat. Tato funkce funguje pro rozhraní API v oboru názvů Windows.Storage . Podívejte se na oddíl Příklad na konci tohoto článku, kde je uveden příklad, jak povolit tuto funkci ve vaší aplikaci. Poznámka: Tato funkce není na Xboxu podporovaná. |
není k dispozici |
| Dokumenty |
knihovna dokumentů Poznámka: Do manifestu aplikace musíte přidat přidružení typů souborů, které deklarují konkrétní typy souborů, ke kterým má aplikace přístup v tomto umístění. Tuto funkci použijte, pokud vaše aplikace: - Usnadňuje offline přístup ke konkrétnímu obsahu OneDrivu pro různé platformy pomocí platných adres URL nebo ID prostředků OneDrivu. - Ukládá otevřené soubory na OneDrive uživatele automaticky v offline režimu. |
Známé složky.DocumentsLibrary |
| Hudba |
hudební knihovna Viz také Soubory a složky v knihovnách Hudba, Obrázky a Videa. |
ZnáméSložky.HudebníKnihovna |
| Obrázky |
knihovnaObrázků Viz také Soubory a složky v knihovnách Hudba, Obrázky a Videa. |
ZnáméSložky.KnihovnaObrázků |
| Videa |
knihovnaVideí Viz také Soubory a složky v knihovnách Hudba, Obrázky a Videa. |
KnownFolders.Videoknihovna |
| Vyměnitelná zařízení |
vyměnitelné úložiště Poznámka: Do manifestu aplikace musíte přidat přidružení typů souborů, které deklarují konkrétní typy souborů, ke kterým má aplikace přístup v tomto umístění. Viz také Přístup ke kartě SD. |
KnownFolders.VyměnitelnáZařízení |
| Knihovny Homegroup | Potřebujete alespoň jednu z následujících funkcí. - hudebníKnihovna - knihovna obrázků - videaKnihovna |
ZnáméSložky.DomácíSkupina |
| Zařízení serveru médií (DLNA) | Potřebujete alespoň jednu z následujících funkcí. - hudebníKnihovna - knihovna obrázků - videaKnihovna |
|
| Složky UNC (Universal Naming Convention) | Potřebujete kombinaci následujících funkcí. Funkce domácí a pracovní sítě: - privateNetworkClientServer A alespoň jedna funkce internetu a veřejných sítí: - internetKlient - internetClientServer A pokud je to možné, funkce přihlašovacích údajů domény: - podnikové ověřování Poznámka: Do manifestu aplikace musíte přidat přidružení typů souborů, které deklarují konkrétní typy souborů, ke kterým má aplikace přístup v tomto umístění. |
Načtení složky pomocí: StorageFolder.GetFolderFromPathAsync Načtení souboru pomocí: StorageFile.GetFileFromPathAsync |
Příklad
Tento příklad přidá omezenou schopnost broadFileSystemAccess. Kromě určení schopnosti musí být přidán jmenný prostor rescap a také do IgnorableNamespaces.
<Package
...
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="uap mp rescap">
...
<Capabilities>
<rescap:Capability Name="broadFileSystemAccess" />
</Capabilities>
Poznámka:
Úplný seznam funkcí aplikace najdete v tématu Deklarace funkcí aplikace.