Přístupová oprávnění k souborům

Aplikace WinUI 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 WinUI 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:

  1. Můžete načíst StorageFolder, který představuje instalační adresář vaší aplikace, například takto:

    Windows.Storage.StorageFolder installedLocation = Windows.ApplicationModel.Package.Current.InstalledLocation;
    
    #include <winrt/Windows.Storage.h>
    ...
    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 installDirectory promě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.

  2. 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::Foundation::IAsyncAction ExampleCoroutineAsync()
    {
        Windows::Storage::StorageFile file{
            co_await Windows::Storage::StorageFile::GetFileFromApplicationUriAsync(Windows::Foundation::Uri{L"ms-appx:///file.txt"})
        };
        // Process file
    }
    

    Po dokončení getFileFromApplicationUriAsync vrátí StorageFile , který představuje file.txt soubor v instalačním adresáři aplikace (file v příkladu).

    Předpona ms-appx:///v identifikátoru URI odkazuje na instalační adresář aplikace. Další informace o používání identifikátorů URI aplikací najdete v tématu Použití identifikátorů URI k odkazování na obsah.

Kromě toho a na rozdíl od jiných umístění můžete také přistupovat k souborům v instalačním adresáři aplikace pomocí některých aplikací Win32 a COM pro aplikace WinUI a některých funkcí standardní knihovny C/C++ ze sady Microsoft Visual Studio.

Instalační adresář aplikace je umístění pouze ke č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:

  1. Pomocí vlastností ApplicationData načtěte složku dat aplikace.

    Můžete například použít ApplicationData. LocalFolder pro načtení StorageFolderu , který představuje místní složku vaší aplikace, takto:

    using Windows.Storage;
    StorageFolder localFolder = ApplicationData.Current.LocalFolder;
    
    Windows::Storage::StorageFolder storageFolder{
        Windows::Storage::ApplicationData::Current().LocalFolder()
    };
    

    Pokud chcete získat přístup k roamingu 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 localFolder proměnné. Další informace o používání umístění dat aplikací najdete v doprovodných materiálech na stránce třídy ApplicationData a stažením ukázky dat aplikace z GitHubu.

  2. 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 file{
        co_await Windows::Storage::StorageFile::GetFileFromApplicationUriAsync(Windows::Foundation::Uri{ L"ms-appdata:///local/file.txt" })
    };
    // Process file
    

    Po dokončení getFileFromApplicationUriAsync vrátí StorageFile , který představuje file.txt soubor v místní složce aplikace (file 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 a na rozdíl od jiných umístění můžete také přistupovat k souborům ve vašich umístěních dat aplikací pomocí některých funkcí pro aplikace WinUI z rozhraní Win32 a COM, stejně jako pomocí některých funkcí standardní knihovny C/C++ ve Visual Studiu.

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 okně Otevřít soubory a složky s nástrojem pro výběr.

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::StorageFile newFile{
        co_await Windows::Storage::DownloadsFolder::CreateFileAsync(L"file.txt")
    };
    // 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 se nazývá newFile v příkladu.

  • 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::StorageFolder newFolder{
        co_await Windows::Storage::DownloadsFolder::CreateFolderAsync(L"New Folder")
    };
    // 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 nazvá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 deklarováním možností v manifestu aplikace nebo zavoláním nástroje pro výběr souborů, aby uživateli umožnila vybrat soubory a složky k přístupu.

Aplikace, které deklarují příponu AppExecutionAlias , mají oprávnění systému souborů z adresáře, ze kterého se spouští v okně konzoly, a směrem 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.

Location Schopnost Windows.Storage API
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 je konfigurovatelný v nastavení > Ochrana osobních údajů >systému 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 rámci oboru názvů Windows.Storage. Příklad této funkce v aplikaci najdete v části Příklad na konci tohoto článku.

Poznámka: Tato funkce není na Xboxu podporovaná.
není k dispozici
Documents 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.
KnownFolders.DocumentsLibrary
Hudba hudební knihovna
Viz také soubory a složky v knihovnách Hudba, Obrázky a Videa.
KnownFolders.MusicLibrary
Pictures knihovna obrázků
Viz také soubory a složky v knihovnách Hudba, Obrázky a Videa.
KnownFolders.KnihovnaObrázků
Videa Knihovna videí
Viz také soubory a složky v knihovnách Hudba, Obrázky a Videa.
KnownFolders.VideosLibrary
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 k kartě SD.
KnownFolders.RemovableDevices
Knihovny domácí skupiny Potřebujete alespoň jednu z následujících funkcí.
- musicLibrary
- knihovna obrázků
- knihovna videí
Známé složky.HomeGroup
Zařízení serveru médií (DLNA) Potřebujete alespoň jednu z následujících funkcí.
- musicLibrary
- knihovna obrázků
- knihovna videí
KnownFolders.MediaServerDevices
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í:
- internetClient
- internetClientServer

A pokud je to možné, funkce přihlašovacích údajů domény:
– enterpriseAuthentication

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á omezené oprávnění broadFileSystemAccess. Kromě specifikace schopnosti musí být přidán obor názvů rescap a také se přidává 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.