Sdílet prostřednictvím


Typy izolace

Přístup k izolovanému úložišti je vždy omezen na uživatele, který ho vytvořil. K implementaci tohoto typu izolace používá modul CLR (Common Language Runtime) stejný pojem identity uživatele, který operační systém rozpozná, což je identita přidružená k procesu, ve kterém je kód spuštěn při otevření úložiště. Tato identita je ověřená identita uživatele, ale zosobnění může způsobit dynamické změny identity aktuálního uživatele.

Přístup k izolovanému úložišti je také omezen na základě identity přidružené k doméně a sestavení aplikace nebo samotnému sestavení. Modul runtime získá tyto identity následujícími způsoby:

  • Identita domény představuje důkaz aplikace, což v případě webové aplikace může být úplná adresa URL. V případě kódu hostovaného v prostředí může být identita domény založená na cestě k adresáři aplikace. Pokud se například spustitelný soubor spustí z cesty C:\Office\MyApp.exe, bude identita domény C:\Office\MyApp.exe.

  • Identita sestavení je důkazem sestavení. Může to pocházet z kryptografického digitálního podpisu, což může být silný název sestavení, vydavatel softwaru sestavení nebo jeho identita adresy URL. Pokud má sestavení silný název i identitu vydavatele softwaru, použije se identita vydavatele softwaru. Pokud sestavení pochází z internetu a není podepsáno, použije se identita adresy URL. Další informace o sestaveních a silných názvech naleznete v tématu Programování se sestaveními.

  • Roamingové obchody se přesunou s uživatelem, který má cestovní profil uživatele. Soubory se zapisují do síťového adresáře a stáhnou se do libovolného počítače, ke kterém se uživatel přihlásí. Další informace o cestovních profilech uživatelů najdete v tématu IsolatedStorageScope.Roaming.

Kombinací konceptů identity uživatele, domény a sestavení může izolované úložiště izolovat data následujícími způsoby, z nichž každá má vlastní scénáře použití:

Jednu z těchto izolace lze kombinovat s cestovním profilem uživatele. Další informace najdete v části Izolované úložiště a roaming.

Následující obrázek ukazuje, jak jsou úložiště izolovaná v různých oborech:

Diagram that shows isolation by user and assembly.

S výjimkou roamingových úložišť je izolované úložiště vždy implicitně izolované podle počítače, protože používá zařízení úložiště, která jsou místní pro daný počítač.

Důležité

Izolované úložiště není dostupné pro aplikace pro Windows 8.x Store. Místo toho použijte datové třídy aplikace v Windows.Storage oborech názvů zahrnutých v rozhraní API prostředí Windows Runtime k ukládání místních dat a souborů. Další informace najdete v tématu Data aplikací v centru Windows Dev Center.

Izolace podle uživatele a sestavení

Pokud musí být sestavení, které používá úložiště dat, přístupné z jakékoli domény aplikace, izolace uživatelem a sestavením je vhodná. V této situaci se izolované úložiště obvykle používá k ukládání dat, která se vztahují napříč více aplikacemi, a není svázaná s žádnou konkrétní aplikací, jako je jméno uživatele nebo informace o licenci. Pro přístup k úložišti izolovanému uživatelem a sestavením musí být kód důvěryhodný pro přenos informací mezi aplikacemi. Izolace podle uživatele a sestavení je obvykle povolena v intranetech, ale ne na internetu. Volání statické IsolatedStorageFile.GetStore metody a předání uživatele a sestavení IsolatedStorageScope vrátí úložiště s tímto druhem izolace.

Následující příklad kódu načte úložiště, které je izolované uživatelem a sestavením. K úložišti je možné přistupovat prostřednictvím objektu isoFile .

IsolatedStorageFile^ isoFile =
    IsolatedStorageFile::GetStore(IsolatedStorageScope::User |
        IsolatedStorageScope::Assembly, (Type^)nullptr, (Type^)nullptr);
IsolatedStorageFile isoFile =
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
    IsolatedStorageScope.Assembly, null, null);
Dim isoFile As IsolatedStorageFile = _
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or _
        IsolatedStorageScope.Assembly, Nothing, Nothing)

Příklad, který používá parametry důkazů, viz GetStore(IsolatedStorageScope, Evidence, Type, Evidence, Type).

Metoda GetUserStoreForAssembly je k dispozici jako zástupce, jak je znázorněno v následujícím příkladu kódu. Tuto klávesovou zkratku nelze použít k otevření úložišť, které jsou schopné roamingu; v GetStore takových případech.

IsolatedStorageFile^ isoFile = IsolatedStorageFile::GetUserStoreForAssembly();
IsolatedStorageFile isoFile = IsolatedStorageFile.GetUserStoreForAssembly();
Dim isoFile As IsolatedStorageFile = _
    IsolatedStorageFile.GetUserStoreForAssembly()

Izolace podle uživatele, domény a sestavení

Pokud vaše aplikace používá sestavení třetí strany, které vyžaduje privátní úložiště dat, můžete k uložení privátních dat použít izolované úložiště. Izolace uživatelem, doménou a sestavením zajišťuje, že k datům má přístup pouze kód v daném sestavení a pouze v případě, že sestavení používá aplikace, která byla spuštěna při vytvoření sestavení úložiště, a pouze v případě, že uživatel, pro kterého bylo úložiště vytvořeno, spustí aplikaci. Izolace uživatelem, doménou a sestavením udržuje sestavení třetí strany před únikem dat do jiných aplikací. Tento typ izolace by měl být vaší výchozí volbou, pokud víte, že chcete použít izolované úložiště, ale nevíte, jaký typ izolace použít. Volání statické GetStore metody IsolatedStorageFile uživatele, domény a sestavení IsolatedStorageScope vrací úložiště s tímto druhem izolace.

Následující příklad kódu načte úložiště izolované uživatelem, doménou a sestavením. K úložišti je možné přistupovat prostřednictvím objektu isoFile .

IsolatedStorageFile^ isoFile =
    IsolatedStorageFile::GetStore(IsolatedStorageScope::User |
        IsolatedStorageScope::Domain |
        IsolatedStorageScope::Assembly, (Type^)nullptr, (Type^)nullptr);
IsolatedStorageFile isoFile =
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
        IsolatedStorageScope.Domain |
        IsolatedStorageScope.Assembly, null, null);
Dim isoFile As IsolatedStorageFile = _
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or _
        IsolatedStorageScope.Domain Or _
        IsolatedStorageScope.Assembly, Nothing, Nothing)

Další metoda je k dispozici jako zástupce, jak je znázorněno v následujícím příkladu kódu. Tuto klávesovou zkratku nelze použít k otevření úložišť, které jsou schopné roamingu; v GetStore takových případech.

IsolatedStorageFile^ isoFile = IsolatedStorageFile::GetUserStoreForDomain();
IsolatedStorageFile isoFile = IsolatedStorageFile.GetUserStoreForDomain();
Dim isoFile As IsolatedStorageFile = _
    IsolatedStorageFile.GetUserStoreForDomain()

Izolované úložiště a roaming

Cestovní profily uživatelů jsou funkce Systému Windows, která umožňuje uživateli nastavit identitu v síti a tuto identitu použít k přihlášení k libovolnému síťovému počítači, která má převést všechna přizpůsobená nastavení. Sestavení, které používá izolované úložiště, může určit, že by se izolované úložiště uživatele mělo přesunout s cestovním profilem uživatele. Roaming lze použít ve spojení s izolací uživatelem a sestavením nebo izolací uživatelem, doménou a sestavením. Pokud se nepoužívá obor roamingu, úložiště se nebudou použít ani v případě, že se použije cestovní profil uživatele.

Následující příklad kódu načte roamingové úložiště izolované uživatelem a sestavením. K úložišti je možné přistupovat prostřednictvím objektu isoFile .

IsolatedStorageFile^ isoFile =
    IsolatedStorageFile::GetStore(IsolatedStorageScope::User |
        IsolatedStorageScope::Assembly |
        IsolatedStorageScope::Roaming, (Type^)nullptr, (Type^)nullptr);
IsolatedStorageFile isoFile =
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
        IsolatedStorageScope.Assembly |
        IsolatedStorageScope.Roaming, null, null);
Dim isoFile As IsolatedStorageFile = _
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or _
        IsolatedStorageScope.Assembly Or _
        IsolatedStorageScope.Roaming, Nothing, Nothing)

Obor domény lze přidat k vytvoření úložiště roamingu izolovaného uživatelem, doménou a aplikací. Následující příklad kódu ukazuje toto.

IsolatedStorageFile^ isoFile =
    IsolatedStorageFile::GetStore(IsolatedStorageScope::User |
        IsolatedStorageScope::Assembly | IsolatedStorageScope::Domain |
        IsolatedStorageScope::Roaming, (Type^)nullptr, (Type^)nullptr);
IsolatedStorageFile isoFile =
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
        IsolatedStorageScope.Assembly | IsolatedStorageScope.Domain |
        IsolatedStorageScope.Roaming, null, null);
Dim isoFile As IsolatedStorageFile = _
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or _
        IsolatedStorageScope.Assembly Or IsolatedStorageScope.Domain Or _
        IsolatedStorageScope.Roaming, Nothing, Nothing)

Viz také