Fájlhozzáférés engedélyei

A WinUI-alkalmazások alapértelmezés szerint hozzáférhetnek bizonyos fájlrendszer-helyekhez. Az alkalmazások a fájlválasztón keresztül vagy a képességek deklarálásával további helyekhez is hozzáférhetnek.

Helyek, amelyekhez a WinUI-alkalmazások hozzáférhetnek

Új alkalmazás létrehozásakor alapértelmezés szerint a következő fájlrendszer-helyeket érheti el:

Alkalmazástelepítési könyvtár

Az a mappa, amelyben az alkalmazás telepítve van a felhasználó rendszerében.

Az alkalmazás telepítési könyvtárában kétféleképpen érheti el a fájlokat és mappákat:

  1. Az alkalmazás telepítési könyvtárát képviselő StorageFolder a következőképpen kérhető le:

    Windows.Storage.StorageFolder installedLocation = Windows.ApplicationModel.Package.Current.InstalledLocation;
    
    #include <winrt/Windows.Storage.h>
    ...
    Windows::Storage::StorageFolder installedLocation{ Windows::ApplicationModel::Package::Current().InstalledLocation() };
    

    Ezután StorageFolder-metódusokkal elérheti a könyvtár fájljait és mappáit. A példában ez a StorageFolder a installDirectory változóban van tárolva. Az alkalmazáscsomaggal való munkáról és a címtár telepítéséről a GitHub alkalmazáscsomag-információs mintájából tudhat meg többet.

  2. Egy fájl közvetlenül az alkalmazás telepítési könyvtárából kérhető le egy alkalmazás URI-jával, például a következő módon:

    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
    }
    

    Amikor a GetFileFromApplicationUriAsync befejeződik, egy StorageFile-t ad vissza, amely az file.txt alkalmazás telepítési könyvtárában (file a példában) található fájlt jelöli.

    Az URI "ms-appx:///" előtagja az alkalmazás telepítési könyvtárára utal. További információ az alkalmazás URI-jainak használatáról az URI-k tartalomhivatkozáshoz való használatával kapcsolatban.

Emellett más helyektől eltérően az alkalmazástelepítési könyvtár fájljait is elérheti néhány Win32 és COM for WinUI-alkalmazással , valamint a Microsoft Visual Studióból származó C/C++ Standard Library-függvényekkel.

Az alkalmazás telepítési könyvtára írásvédett hely. A fájlválasztón keresztül nem férhet hozzá a telepítési könyvtárhoz.

Alkalmazásadat-helyek elérése

Azok a mappák, ahol az alkalmazás adatokat tárolhat. Ezek a mappák (helyi, roaming és ideiglenes) az alkalmazás telepítésekor jönnek létre.

Az alkalmazás adathelyéről kétféleképpen érheti el a fájlokat és mappákat:

  1. Alkalmazásadat-mappa lekérése az ApplicationData-tulajdonságok használatával.

    Használhatja például az ApplicationData-t. LocalFolder az alkalmazás helyi mappáját képviselő StorageFolder lekéréséhez:

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

    Ha hozzá szeretne férni az alkalmazás roaming- vagy ideiglenes mappájához, használja helyette a RoamingFolder vagy az TemporaryFolder tulajdonságot.

    Miután lekért egy alkalmazásadat-helyet képviselő StorageFoldert , a StorageFolder metódusokkal elérheti az adott helyen lévő fájlokat és mappákat. A példában ezek a StorageFolder-objektumok a localFolder változóban vannak tárolva. Az alkalmazásadat-helyek használatáról az ApplicationData osztálylapján található útmutatóból, valamint az alkalmazásadat-minta GitHubról való letöltésével tudhat meg többet.

  2. A fájlokat közvetlenül az alkalmazás helyi mappájából is lekérheti egy alkalmazás URI-jával, például a következő módon:

    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
    

    Amikor a GetFileFromApplicationUriAsync befejeződik, egy StorageFile-t ad vissza, amely az file.txt alkalmazás helyi mappájában található fájlt jelöli (file a példában).

    Az URI "ms-appdata:///local/" előtagja az alkalmazás helyi mappájára hivatkozik. Az alkalmazás központi vagy ideiglenes mappáiban lévő fájlok eléréséhez használja az "ms-appdata:///roaming/" vagy az "ms-appdata:///temporary/" parancsot. Az alkalmazás URI-kkal kapcsolatos további tudnivalókat a Fájlerőforrások betöltése című témakörben talál.

Emellett a többi helytől eltérően az alkalmazás adathelyein lévő fájlokat is elérheti néhány Win32 és COM winUI-alkalmazással , valamint a Visual Studió C/C++ standard könyvtárfüggvényeivel.

A fájlválasztón keresztül nem érheti el a helyi, a barangolási vagy az ideiglenes mappákat.

Cserélhető eszközök elérése

Emellett az alkalmazás alapértelmezés szerint hozzáférhet a csatlakoztatott eszközök egyes fájljaihoz. Ez akkor lehetséges, ha az alkalmazás az AutoPlay bővítmény használatával automatikusan elindul, amikor a felhasználók csatlakoztatnak egy eszközt, például egy kamerát vagy egy USB-meghajtót a rendszerükhöz. Az alkalmazás által elérhető fájlok meghatározott fájltípusokra korlátozódnak, amelyek az alkalmazásjegyzék fájltípus-társítás deklarációiban vannak megadva.

Természetesen a cserélhető eszközökön lévő fájlokhoz és mappákhoz is hozzáférhet, ha meghívja a fájlválasztót (a FileOpenPicker és a FolderPicker használatával), és lehetővé teszi a felhasználó számára, hogy az alkalmazás fájljait és mappáit elérhesse. Megtudhatja, hogyan használhatja a fájlválasztót a fájlok és mappák választóval történő megnyitásához.

Megjegyzés:

További információ az SD-kártya vagy más cserélhető eszközök eléréséről: Access the SD card.

A felhasználó Letöltések mappája

Az a mappa, amelyben a letöltött fájlok alapértelmezés szerint vannak mentve.

Alapértelmezés szerint az alkalmazás csak a felhasználó által létrehozott Letöltések mappában lévő fájlokat és mappákat érheti el. A felhasználó Letöltések mappájában lévő fájlokhoz és mappákhoz azonban egy fájlválasztó (FileOpenPicker vagy FolderPicker) meghívásával férhet hozzá, így a felhasználók navigálhatnak és kiválaszthatják az alkalmazás számára elérhető fájlokat vagy mappákat.

  • A következő módon hozhat létre fájlt a felhasználó Letöltések mappájában:

    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. A CreateFileAsync túlterhelt, így megadhatja, hogy mit kell tennie a rendszernek, ha már van egy meglévő fájl a Letöltések mappában, amelynek ugyanaz a neve. Ha ezek a metódusok befejeződnek, egy StorageFile-t adnak vissza, amely a létrehozott fájlt jelöli. Ennek a fájlnak a neve a példában newFile.

  • Hozzon létre almappát a felhasználó 'Letöltések' mappájában a következő módon:

    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. A CreateFolderAsync túlterhelt, így megadhatja, hogy mit kell tennie a rendszernek, ha már van egy meglévő almappája a Letöltések mappában, amelynek ugyanaz a neve. Ha ezek a metódusok befejeződnek, a létrehozott almappát jelképező StorageFoldert adnak vissza. Ennek a fájlnak a neve a példában newFolder.

További helyek elérése

Az alapértelmezett helyeken kívül az alkalmazások további fájlokat és mappákat is hozzáférhetnek az alkalmazásjegyzékben található képességek deklarálásával , vagy egy fájlválasztó meghívásával , hogy a felhasználó az alkalmazás számára fájlokat és mappákat válasszon.

Az AppExecutionAlias bővítményt deklaráló alkalmazások fájlrendszer-engedélyekkel rendelkeznek attól a könyvtártól, amelyről a konzolablakban indulnak el, és lefelé.

Fájlokhoz és mappákhoz való hozzáférés megőrzése

Amikor az alkalmazás lekéri a fájlt vagy mappát egy jelölőn, egy fájlaktiváláson, egy húzási műveleten stb. keresztül, az csak az alkalmazás leállításáig fér hozzá az adott fájlhoz vagy mappához. Ha a jövőben automatikusan hozzá szeretne férni a fájlhoz vagy mappához, hozzáadhatja a FutureAccessListhez , hogy az alkalmazás a jövőben könnyen hozzáférhessen az adott elemhez. A MostRecentlyUsedList használatával egyszerűen kezelheti a legutóbb használt fájlok listáját.

Egyéb helyek elérésének lehetőségei

Az alábbi táblázat felsorolja azokat a további helyeket, amelyeket egy vagy több képesség deklarálásával és a társított Windows.Storage API használatával érhet el.

Elhelyezkedés Képesség Windows.Storage API
Minden fájl, amelyhez a felhasználónak hozzáférése van. Például: dokumentumok, képek, fényképek, letöltések, asztali, OneDrive stb. broadFileSystemAccess

Ez egy korlátozott képesség. Az Access a Beállítások > adatvédelmi >fájlrendszerben konfigurálható. Mivel a felhasználók bármikor engedélyt adhatnak vagy tagadhatnak meg a Beállításokban, gondoskodnia kell arról, hogy az alkalmazás rugalmas legyen ezekre a módosításokra. Ha úgy találja, hogy az alkalmazás nem rendelkezik hozzáféréssel, kérheti a felhasználót, hogy módosítsa a beállítást a Windows fájlrendszer hozzáférésére és adatvédelmi cikkére mutató hivatkozással. Vegye figyelembe, hogy a felhasználónak be kell zárnia az alkalmazást, be kell állítania a beállítást, és újra kell indítania az alkalmazást. Ha az alkalmazás futása közben váltják a beállítást, a platform felfüggeszti az alkalmazást, hogy menthesse az állapotot, majd kényszerítve állítsa le az alkalmazást az új beállítás alkalmazásához. A 2018. áprilisi frissítésben az engedély alapértelmezett értéke be van kapcsolva. A 2018. októberi frissítésben az alapértelmezett érték ki van kapcsolva.

Ha olyan alkalmazást küld az Áruházba, amely deklarálja ezt a képességet, további leírást kell adnia arról, hogy az alkalmazásnak miért van szüksége erre a képességre, és hogyan kívánja használni.

Ez a funkció a Windows.Storage névtérBEN lévő API-k esetében működik. A cikk végén található Példa szakaszban talál egy példát arra, hogyan engedélyezheti ezt a képességet az alkalmazásban.

Megjegyzés: Ez a funkció xboxos konzolon nem támogatott.
nincs adat
Dokumentumok dokumentumkönyvtár

Megjegyzés: Olyan fájltípus-társításokat kell hozzáadnia az alkalmazásjegyzékhez, amelyek meghatározott fájltípusokat deklarálnak, amelyeket az alkalmazás ezen a helyen érhet el.

Használja ezt a képességet, ha az alkalmazás:
– Platformfüggetlen hozzáférést biztosít adott OneDrive-tartalmakhoz érvényes OneDrive URL-címek vagy erőforrás-azonosítók használatával
– Automatikusan menti a megnyitott fájlokat a felhasználó OneDrive-jára offline állapotban
KnownFolders.DocumentsLibrary
Zene zeneiKönyvtár
A Fájlok és mappák a Zene, Képek és Videók tárakban is látható.
KnownFolders.MusicLibrary
Pictures képtár
A Fájlok és mappák a Zene, Képek és Videók tárakban is látható.
KnownFolders.PicturesLibrary
Videók Videók könyvtára
A Fájlok és mappák a Zene, Képek és Videók tárakban is látható.
KnownFolders.VideosLibrary
Cserélhető eszközök cserélhető tároló

Megjegyzés: Olyan fájltípus-társításokat kell hozzáadnia az alkalmazásjegyzékhez, amelyek meghatározott fájltípusokat deklarálnak, amelyeket az alkalmazás ezen a helyen érhet el.

Lásd még A SD kártya elérése.
KnownFolders.RemovableDevices (eltávolítható eszközök)
Házi csoport könyvtárai Az alábbi képességek közül legalább egyre van szükség.
- musicLibrary
- képtár
- videók könyvtára
KnownFolders.HomeGroup
Médiakiszolgáló-eszközök (DLNA) Az alábbi képességek közül legalább egyre van szükség.
- musicLibrary
- képkönyvtár
- videótár
KnownFolders.MediaServerDevices
Univerzális elnevezési konvenció (UNC) mappák A következő képességek kombinációjára van szükség.

Az otthoni és munkahelyi hálózatok képessége:
- privateNetworkClientServer

És legalább egy internetes és nyilvános hálózati képesség:
- internetClient
- internetClientServer

És ha alkalmazható, a tartományi hitelesítő adatok képessége:
- vállalati hitelesítés

Megjegyzés: Olyan fájltípus-társításokat kell hozzáadnia az alkalmazásjegyzékhez, amelyek meghatározott fájltípusokat deklarálnak, amelyeket az alkalmazás ezen a helyen érhet el.
Mappa lekérése a következő használatával:
StorageFolder.GetFolderFromPathAsync

Fájl lekérése a következő használatával:
StorageFile.GetFileFromPathAsync

Example

Ez a példa hozzáadja a korlátozott broadFileSystemAccess képességet. A képesség megadása mellett hozzá kell adni a rescap névteret, és a IgnorableNamespaces-hez is hozzá kell adni.

<Package
  ...
  xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
  IgnorableNamespaces="uap mp rescap">
...
<Capabilities>
    <rescap:Capability Name="broadFileSystemAccess" />
</Capabilities>

Megjegyzés:

Az alkalmazásképességek teljes listáját az alkalmazásképesség-deklarációkban találja.