Dela via


Typer av isolering

Åtkomst till isolerad lagring är alltid begränsad till den användare som skapade den. För att implementera den här typen av isolering använder den vanliga språkkörningen samma uppfattning om användaridentitet som operativsystemet känner igen, vilket är identiteten som är associerad med den process där koden körs när arkivet öppnas. Den här identiteten är en autentiserad användaridentitet, men personifiering kan göra att den aktuella användarens identitet ändras dynamiskt.

Åtkomsten till isolerad lagring begränsas också enligt den identitet som är associerad med programmets domän och sammansättning, eller enbart med sammansättningen. Körningen hämtar dessa identiteter på följande sätt:

  • Domänidentitet representerar programmets bevis, vilket i fallet med ett webbprogram kan vara den fullständiga URL:en. För shell-värdbaserad kod kan domänidentiteten baseras på sökvägen till programkatalogen. Om den körbara filen till exempel körs från sökvägen C:\Office\MyApp.exe skulle domänidentiteten vara C:\Office\MyApp.exe.

  • Sammansättningsidentitet är beviset för sammansättningen. Detta kan komma från en kryptografisk digital signatur, som kan vara sammansättningens starka namn, programvaruutgivaren för sammansättningen eller dess URL-identitet. Om en sammansättning har både ett starkt namn och en programvaruutgivaridentitet används programvaruutgivarens identitet. Om sammansättningen kommer från Internet och är osignerad används URL-identiteten. Mer information om sammansättningar och starka namn finns i Programmering med sammansättningar.

  • Roamingbutiker flyttas med en användare som har en central användarprofil. Filer skrivs till en nätverkskatalog och laddas ned till alla datorer som användaren loggar in på. Mer information om centrala användarprofiler finns i IsolatedStorageScope.Roaming.

Genom att kombinera begreppen användar-, domän- och sammansättningsidentitet kan isolerad lagring isolera data på följande sätt, där var och en har sina egna användningsscenarier:

Någon av dessa isoleringar kan kombineras med en central användarprofil. Mer information finns i avsnittet Isolerad lagring och roaming.

Följande bild visar hur butiker isoleras i olika omfång:

Diagram that shows isolation by user and assembly.

Förutom roaminglager isoleras alltid isolerad lagring implicit av datorn eftersom den använder de lagringsanläggningar som är lokala för en viss dator.

Viktigt!

Isolerad lagring är inte tillgänglig för Windows 8.x Store-appar. Använd i stället programdataklasserna i namnrymderna Windows.Storage som ingår i Windows Runtime-API:et för att lagra lokala data och filer. Mer information finns i Programdata i Windows Dev Center.

Isolering efter användare och sammansättning

När sammansättningen som använder datalagret måste vara tillgänglig från alla programdomäner är isolering efter användare och sammansättning lämplig. I den här situationen används vanligtvis isolerad lagring för att lagra data som gäller för flera program och som inte är knutna till något visst program, till exempel användarens namn eller licensinformation. För att få åtkomst till lagring som isolerats av användare och sammansättning måste kod vara betrodd för att överföra information mellan program. Normalt tillåts isolering efter användare och sammansättning i intranät men inte på Internet. Anropa den statiska IsolatedStorageFile.GetStore metoden och skicka in en användare och en sammansättning IsolatedStorageScope returnerar lagring med den här typen av isolering.

I följande kodexempel hämtas ett arkiv som är isolerat av användare och sammansättning. Arkivet kan nås via objektet 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)

Ett exempel som använder bevisparametrarna finns i GetStore(IsolatedStorageScope, Evidence, Type, Evidence, Type).

Metoden GetUserStoreForAssembly är tillgänglig som en genväg, som du ser i följande kodexempel. Den här genvägen kan inte användas för att öppna butiker som kan roaming. användning GetStore i sådana fall.

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

Isolering efter användare, domän och sammansättning

Om ditt program använder en tredjepartssammansättning som kräver ett privat datalager kan du använda isolerad lagring för att lagra privata data. Isolering efter användare, domän och sammansättning säkerställer att endast kod i en viss sammansättning kan komma åt data, och endast när sammansättningen används av det program som kördes när sammansättningen skapade arkivet, och endast när användaren som arkivet skapades för kör programmet. Isolering efter användare, domän och sammansättning hindrar sammansättningen från tredje part från att läcka data till andra program. Den här isoleringstypen bör vara ditt standardval om du vet att du vill använda isolerad lagring men inte är säker på vilken typ av isolering som ska användas. Genom att anropa den statiska GetStore metoden för IsolatedStorageFile och skicka in en användare, domän och sammansättning IsolatedStorageScope returneras lagring med den här typen av isolering.

I följande kodexempel hämtas ett arkiv som är isolerat av användare, domän och sammansättning. Arkivet kan nås via objektet 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)

En annan metod är tillgänglig som en genväg, som du ser i följande kodexempel. Den här genvägen kan inte användas för att öppna butiker som kan roaming. användning GetStore i sådana fall.

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

Isolerad lagring och roaming

Centrala användarprofiler är en Windows-funktion som gör det möjligt för en användare att konfigurera en identitet i ett nätverk och använda den identiteten för att logga in på valfri nätverksdator och föra över alla anpassade inställningar. En sammansättning som använder isolerad lagring kan ange att användarens isolerade lagring ska flyttas med den centrala användarprofilen. Roaming kan användas tillsammans med isolering av användare och sammansättning eller med isolering efter användare, domän och sammansättning. Om ett roamingomfång inte används, kommer butiker inte att ströva omkring även om en nätverksroamingsanvändarprofil används.

I följande kodexempel hämtas ett centrallager som är isolerat av användare och sammansättning. Arkivet kan nås via objektet 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)

Ett domänomfång kan läggas till för att skapa ett centrallager isolerat av användare, domän och program. Följande kodexempel visar detta.

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)

Se även