Share via


IsolatedStorageContainment Výčet

Definice

Upozornění

Code Access Security is not supported or honored by the runtime.

Určuje povolené použití izolovaného úložiště.

public enum class IsolatedStorageContainment
[System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public enum IsolatedStorageContainment
[System.Serializable]
public enum IsolatedStorageContainment
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum IsolatedStorageContainment
public enum IsolatedStorageContainment
[<System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type IsolatedStorageContainment = 
[<System.Serializable>]
type IsolatedStorageContainment = 
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type IsolatedStorageContainment = 
type IsolatedStorageContainment = 
Public Enum IsolatedStorageContainment
Dědičnost
IsolatedStorageContainment
Atributy

Pole

AdministerIsolatedStorageByUser 112

Neomezená možnost správy uživatelského úložiště. Umožňuje procházení a odstranění celého úložiště uživatelů, ale ne přístup ke čtení kromě vlastní domény nebo identity sestavení uživatele.

ApplicationIsolationByMachine 69

Úložiště je nejprve izolované počítačem a potom aplikací. To poskytuje úložiště dat pro aplikaci, které je přístupné v libovolném kontextu domény. Datová přihrádka pro jednotlivé aplikace vyžaduje další vztah důvěryhodnosti, protože potenciálně poskytuje "tunel" mezi aplikacemi, které by mohly ohrozit izolaci dat aplikací na konkrétních webech.

ApplicationIsolationByRoamingUser 101

Úložiště je nejprve izolované uživatelem a potom důkazy aplikace. Pokud je povolený datový roaming uživatelů Windows, bude úložiště roamingu. To poskytuje úložiště dat pro aplikaci, které je přístupné v libovolném kontextu domény. Datová přihrádka pro jednotlivé aplikace vyžaduje další vztah důvěryhodnosti, protože potenciálně poskytuje "tunel" mezi aplikacemi, které by mohly ohrozit izolaci dat aplikací na konkrétních webech.

ApplicationIsolationByUser 21

Úložiště je nejprve izolované podle uživatele a pak podle aplikace. Úložiště je také izolované podle počítače. To poskytuje úložiště dat pro aplikaci, které je přístupné v libovolném kontextu domény. Datová přihrádka pro jednotlivé aplikace vyžaduje další vztah důvěryhodnosti, protože potenciálně poskytuje "tunel" mezi aplikacemi, které by mohly ohrozit izolaci dat aplikací na konkrétních webech.

AssemblyIsolationByMachine 64

Úložiště je nejprve izolované počítačem a pak sestavením kódu. To poskytuje úložiště dat pro sestavení, které je přístupné v libovolném kontextu domény. Datová přihrádka pro jednotlivé sestavení vyžaduje další vztah důvěryhodnosti, protože potenciálně poskytuje "tunel" mezi aplikacemi, které by mohly ohrozit izolaci dat aplikací na konkrétních webech.

AssemblyIsolationByRoamingUser 96

Úložiště je nejprve izolované uživatelem a pak důkazy sestavení. Pokud je povolený datový roaming uživatelů Windows, bude úložiště roamingu. To poskytuje úložiště dat pro sestavení, které je přístupné v libovolném kontextu domény. Datová přihrádka pro jednotlivé sestavení vyžaduje další vztah důvěryhodnosti, protože potenciálně poskytuje "tunel" mezi aplikacemi, které by mohly ohrozit izolaci dat aplikací na konkrétních webech.

AssemblyIsolationByUser 32

Úložiště je nejprve izolované uživatelem a pak sestavením kódu. Úložiště je také izolované podle počítače. To poskytuje úložiště dat pro sestavení, které je přístupné v libovolném kontextu domény. Datová přihrádka pro jednotlivé sestavení vyžaduje další vztah důvěryhodnosti, protože potenciálně poskytuje "tunel" mezi aplikacemi, které by mohly ohrozit izolaci dat aplikací na konkrétních webech.

DomainIsolationByMachine 48

Úložiště je nejprve izolované podle počítače a pak podle domény a sestavení. K datům je možné přistupovat pouze v kontextu stejné aplikace a pouze při spuštění na stejném počítači. To je užitečné, když sestavení třetí strany chce zachovat soukromé úložiště dat.

DomainIsolationByRoamingUser 80

Úložiště je nejprve izolované podle uživatele a pak podle domény a sestavení. Pokud je povolený datový roaming uživatelů Windows, bude úložiště roamingu. K datům je možné přistupovat pouze v kontextu stejné aplikace a pouze v případech, kdy je spouští stejný uživatel. To je užitečné, když sestavení třetí strany chce zachovat soukromé úložiště dat.

DomainIsolationByUser 16

Úložiště je nejprve izolované podle uživatele a pak podle domény a sestavení. Úložiště je také izolované podle počítače. K datům je možné přistupovat pouze v kontextu stejné aplikace a pouze v případech, kdy je spouští stejný uživatel. To je užitečné, když sestavení třetí strany chce zachovat soukromé úložiště dat.

None 0

Použití izolovaného úložiště není povoleno.

UnrestrictedIsolatedStorage 240

Použití izolovaného úložiště je povoleno bez omezení. Kód má úplný přístup k jakékoli části úložiště uživatele bez ohledu na identitu domény nebo sestavení. Toto použití izolovaného úložiště zahrnuje možnost vytvořit výčet obsahu úložiště dat izolovaného úložiště.

Příklady

Tento příklad ukazuje, jak říct CLR, že kód v tomto sestavení vyžaduje IsolatedStoragePermission a také ukazuje, jak zapisovat a číst z izolovaného úložiště.

using namespace System;
using namespace System::Security;
using namespace System::Security::Permissions;
using namespace System::IO::IsolatedStorage;
using namespace System::IO;


static void WriteIsolatedStorage()
{
    try
    {
        // Attempt to create a storage file that is isolated by
        // user and assembly. IsolatedStorageFilePermission
        // granted to the attribute at the top of this file
        // allows CLR to load this assembly and execution of this
        // statement.
        Stream^ fileCreateStream = gcnew
            IsolatedStorageFileStream(
            "AssemblyData",
            FileMode::Create,
            IsolatedStorageFile::GetUserStoreForAssembly());

        StreamWriter^ streamWriter = gcnew StreamWriter(
            fileCreateStream);
        try
        {
            // Write some data out to the isolated file.

            streamWriter->Write("This is some test data.");
            streamWriter->Close();	
        }
        finally
        {
            delete fileCreateStream;
            delete streamWriter;
        } 
    }
    catch (IOException^ ex)
    {
        Console::WriteLine(ex->Message);
    }

    try
    {
        Stream^ fileOpenStream =
            gcnew IsolatedStorageFileStream(
            "AssemblyData",
            FileMode::Open,
            IsolatedStorageFile::GetUserStoreForAssembly());
        // Attempt to open the file that was previously created.

        StreamReader^ streamReader = gcnew StreamReader(
            fileOpenStream);
        try
        { 
            // Read the data from the file and display it.

            Console::WriteLine(streamReader->ReadLine());
            streamReader->Close();
        }
        finally
        {
            delete fileOpenStream;
            delete streamReader;
        }
    }
    catch (FileNotFoundException^ ex)
    {
        Console::WriteLine(ex->Message);
    }
    catch (IOException^ ex)
    {
        Console::WriteLine(ex->Message);
    }
}
// Notify the CLR to only grant IsolatedStorageFilePermission to called methods. 
// This restricts the called methods to working only with storage files that are isolated 
// by user and assembly.
[IsolatedStorageFilePermission(SecurityAction::PermitOnly, UsageAllowed = IsolatedStorageContainment::AssemblyIsolationByUser)]
int main()
{
    WriteIsolatedStorage();
}

// This code produces the following output.
//
//  This is some test data.
using System;
using System.Security.Permissions;
using System.IO.IsolatedStorage;
using System.IO;

// Notify the CLR to only grant IsolatedStorageFilePermission to called methods.
// This restricts the called methods to working only with storage files that are isolated
// by user and assembly.
[IsolatedStorageFilePermission(SecurityAction.PermitOnly, UsageAllowed = IsolatedStorageContainment.AssemblyIsolationByUser)]
public sealed class App
{
    static void Main()
    {
        WriteIsolatedStorage();
    }
    private static void WriteIsolatedStorage()
    {
        // Attempt to create a storage file that is isolated by user and assembly.
        // IsolatedStorageFilePermission granted to the attribute at the top of this file
        // allows CLR to load this assembly and execution of this statement.
        using (Stream s = new IsolatedStorageFileStream("AssemblyData", FileMode.Create, IsolatedStorageFile.GetUserStoreForAssembly()))
        {

            // Write some data out to the isolated file.
            using (StreamWriter sw = new StreamWriter(s))
            {
                sw.Write("This is some test data.");
            }
        }

        // Attempt to open the file that was previously created.
        using (Stream s = new IsolatedStorageFileStream("AssemblyData", FileMode.Open, IsolatedStorageFile.GetUserStoreForAssembly()))
        {
            // Read the data from the file and display it.
            using (StreamReader sr = new StreamReader(s))
            {
                Console.WriteLine(sr.ReadLine());
            }
        }
    }
}

// This code produces the following output.
//
//  Some test data.
Option Strict On
Imports System.Security.Permissions
Imports System.IO.IsolatedStorage
Imports System.IO


' Notify the CLR to only grant IsolatedStorageFilePermission to called methods. 
' This restricts the called methods to working only with storage files that are isolated 
' by user and assembly.
<IsolatedStorageFilePermission(SecurityAction.PermitOnly, UsageAllowed:=IsolatedStorageContainment.AssemblyIsolationByUser)> _
Public NotInheritable Class App

    Shared Sub Main()
        WriteIsolatedStorage()
    End Sub
    Shared Sub WriteIsolatedStorage()
        ' Attempt to create a storage file that is isolated by user and assembly.
        ' IsolatedStorageFilePermission granted to the attribute at the top of this file 
        ' allows CLR to load this assembly and execution of this statement.
        Dim s As New IsolatedStorageFileStream("AssemblyData", FileMode.Create, IsolatedStorageFile.GetUserStoreForAssembly())
        Try

            ' Write some data out to the isolated file.
            Dim sw As New StreamWriter(s)
            Try
                sw.Write("This is some test data.")
            Finally
                sw.Dispose()
            End Try
        Finally
            s.Dispose()
        End Try

        ' Attempt to open the file that was previously created.
        Dim t As New IsolatedStorageFileStream("AssemblyData", FileMode.Open, IsolatedStorageFile.GetUserStoreForAssembly())
        Try
            ' Read the data from the file and display it.
            Dim sr As New StreamReader(t)
            Try
                Console.WriteLine(sr.ReadLine())
            Finally
                sr.Dispose()
            End Try
        Finally
            t.Dispose()
        End Try

    End Sub
End Class

' This code produces the following output.
'
'  Some test data.

Poznámky

Upozornění

Zabezpečení přístupu kódu (CAS) bylo zastaralé ve všech verzích rozhraní .NET Framework a .NET. Nedávné verze rozhraní .NET nedodržují poznámky CAS a při použití rozhraní API souvisejících s cas vytvářejí chyby. Vývojáři by měli hledat alternativní způsoby provádění úloh zabezpečení.

Izolované úložiště používá důkazy k určení jedinečné oblasti úložiště pro použití aplikací nebo komponentou. Identita sestavení jednoznačně určuje kořen virtuálního systému souborů pro použití tímto sestavením. Proto místo mnoha aplikací a komponent, které sdílejí společný prostředek, jako je systém souborů nebo registr, má každá z nich ze své podstaty přiřazenou vlastní oblast souborů.

Při přiřazování izolovaného úložiště se používají čtyři základní obory izolace:

  • User - Kód je vždy vymezen podle aktuálního uživatele. Stejné sestavení obdrží různá úložiště, když ho spustí různí uživatelé.

  • Machine - Kód je vždy vymezen podle stroje. Stejné sestavení obdrží stejná úložiště při spuštění různými uživateli na stejném počítači.

  • Assembly– Kód je kryptograficky identifikován silným názvem (například Microsoft.Office.* nebo Microsoft.Office.Word), vydavatelem (na základě veřejného klíče), adresou URL (například http://www.fourthcoffee.com/process/grind.htm), webem nebo zónou.

  • Domain – Kód se identifikuje na základě důkazů přidružených k doméně aplikace. Identita webové aplikace je odvozena z adresy URL webu nebo adresy URL, webu nebo zóny webové stránky. Identita místního kódu je založena na cestě k adresáři aplikace.

Definice adresy URL, webu a zóny najdete v tématu UrlIdentityPermission, SiteIdentityPermissiona ZoneIdentityPermission.

Tyto identity jsou seskupené. V takovém případě se identity použijí jedna po druhé, dokud se nevytvořilo požadované izolované úložiště. Platná seskupení jsou User+Assembly a User+Assembly+Domain. Toto seskupení identit je užitečné v mnoha různých aplikacích.

Pokud jsou data uložena doménou, uživatelem a sestavením, jsou data soukromá v tom, že k datům má přístup pouze kód v daném sestavení. Úložiště dat je také izolované aplikací, ve které běží, takže sestavení nepředstavuje potenciální únik tím, že se data zveřejňují jiným aplikacím.

Izolaci sestavení a uživatele lze použít pro uživatelská data, která se vztahují na více aplikací; například informace o licenci nebo osobní údaje uživatele (jméno, přihlašovací údaje pro ověřování atd.), které jsou nezávislé na aplikaci.

IsolatedStorageContainment zveřejňuje příznaky, které určují, jestli má aplikace povoleno používat izolované úložiště, a pokud ano, které kombinace identit ho můžou používat. Určuje také, jestli má aplikace povoleno ukládat informace do umístění, které může používat roaming s uživatelem (musí být nakonfigurované cestovní profily uživatelů systému Windows nebo přesměrování složky).

Platí pro

Viz také