IsolatedStorageContainment Перечисление

Определение

Внимание!

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

Указывает разрешенное использование изолированного хранилища.

public enum class 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}")]
public enum IsolatedStorageContainment
[System.Serializable]
public enum IsolatedStorageContainment
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum IsolatedStorageContainment
type 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 = 
Public Enum IsolatedStorageContainment
Наследование
IsolatedStorageContainment
Атрибуты

Поля

AdministerIsolatedStorageByUser 112

Неограниченные возможности администрирования для хранилища пользователя. Позволяет просматривать и удалять все хранилище пользователя, но доступ к чтению предоставляется только собственной идентификации домена/сборки.

ApplicationIsolationByMachine 69

Хранилище изолируется сначала компьютером, а затем приложением. Таким образом обеспечивается для приложения хранение данных, доступных в контексте любого домена. Ячейка данных в приложении требует дополнительного доверия, т. к. она может привести к появлению "туннеля" между приложениями, который может вызвать нарушение изоляции данных приложений на некоторых веб-узлах.

ApplicationIsolationByRoamingUser 101

Хранилище изолируется сначала пользователем, а затем свидетельством приложения. Хранилище будет перемещаться, если включено перемещение данных пользователя Windows. Таким образом обеспечивается для приложения хранение данных, доступных в контексте любого домена. Ячейка данных в приложении требует дополнительного доверия, т. к. она может привести к появлению "туннеля" между приложениями, который может вызвать нарушение изоляции данных приложений на некоторых веб-узлах.

ApplicationIsolationByUser 21

Хранилище изолируется сначала пользователем, а затем приложением. Хранилище также изолируется компьютером. Таким образом обеспечивается для приложения хранение данных, доступных в контексте любого домена. Ячейка данных в приложении требует дополнительного доверия, т. к. она может привести к появлению "туннеля" между приложениями, который может вызвать нарушение изоляции данных приложений на некоторых веб-узлах.

AssemblyIsolationByMachine 64

Хранилище изолируется сначала компьютером, а затем сборкой кода. Таким образом обеспечивается для сборки хранение данных, доступных в контексте любого домена. Ячейка данных в сборке требует дополнительного доверия, т. к. она может привести к появлению "туннеля" между приложениями, который может вызвать нарушение изоляции данных приложений на некоторых веб-узлах.

AssemblyIsolationByRoamingUser 96

Хранилище изолируется сначала пользователем, а затем свидетельством сборки. Хранилище будет перемещаться, если включено перемещение данных пользователя Windows. Таким образом обеспечивается для сборки хранение данных, доступных в контексте любого домена. Ячейка данных в сборке требует дополнительного доверия, т. к. она может привести к появлению "туннеля" между приложениями, который может вызвать нарушение изоляции данных приложений на некоторых веб-узлах.

AssemblyIsolationByUser 32

Хранилище изолируется сначала пользователем, а затем сборкой кода. Хранилище также изолируется компьютером. Таким образом обеспечивается для сборки хранение данных, доступных в контексте любого домена. Ячейка данных в сборке требует дополнительного доверия, т. к. она может привести к появлению "туннеля" между приложениями, который может вызвать нарушение изоляции данных приложений на некоторых веб-узлах.

DomainIsolationByMachine 48

Хранилище изолируется сначала компьютером, а затем доменом и сборкой. Доступ к данным может быть осуществлен только в контексте того же приложения и только при запуске на том же компьютере. Это полезно, когда сборке сторонней организации требуется закрытое хранилище данных.

DomainIsolationByRoamingUser 80

Хранилище изолируется сначала пользователем, а затем доменом и сборкой. Хранилище будет перемещаться, если включено перемещение данных пользователя Windows. Доступ к данным может быть осуществлен только в контексте того же приложения и только при запуске тем же пользователем. Это полезно, когда сборке сторонней организации требуется закрытое хранилище данных.

DomainIsolationByUser 16

Хранилище изолируется сначала пользователем, а затем доменом и сборкой. Хранилище также изолируется компьютером. Доступ к данным может быть осуществлен только в контексте того же приложения и только при запуске тем же пользователем. Это полезно, когда сборке сторонней организации требуется закрытое хранилище данных.

None 0

Использование изолированного хранилища не допускается.

UnrestrictedIsolatedStorage 240

Использование изолированного хранилища допускается без ограничения. Код имеет полный доступ к любой части пользовательского хранилища независимо от учетной записи домена или сборки. Такое использование изолированного хранилища включает в себя возможность перечислять содержимое изолированного хранилища данных.

Примеры

В этом примере показано, как сообщить среде CLR, что код в этой сборке требует, IsolatedStoragePermission а также демонстрирует, как записывать и считывать данные из изолированного хранилища.

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.

Комментарии

Изолированное хранилище использует доказательства для определения уникальной области хранения для использования приложением или компонентом. Удостоверение сборки однозначно определяет корень виртуальной файловой системы для использования этой сборкой. Таким образом, вместо того, чтобы многие приложения и компоненты совместно используют общий ресурс, например файловую систему или реестр, каждая из них имеет собственную область файлов, изначально назначенную ей.

При назначении изолированного хранилища используются четыре основных области изоляции:

  • User — Код всегда ограничен текущим пользователем. Та же сборка будет получать разные хранилища при запуске разными пользователями.

  • Machine — Код всегда ограничен в соответствии с компьютером. Та же сборка будет получать те же хранилища при запуске разных пользователей на одном компьютере.

  • Assembly— Код определяется криптографически по строгому имени (например, Microsoft.Office* или Microsoft.Office. Word), издателем (на основе открытого ключа), по URL-адресу (например, http://www.fourthcoffee.com/process/grind.htmпо сайту или по зонам).

  • Domain — Код определяется на основе доказательств, связанных с доменом приложения. Удостоверение веб-приложения является производным от URL-адреса сайта или URL-адреса веб-страницы, сайта или зоны. Идентификатор локального кода основан на пути к каталогу приложения.

Определения URL-адреса, сайта и зоны см. в разделе UrlIdentityPermission, SiteIdentityPermissionа также ZoneIdentityPermission.

Эти удостоверения группируются вместе, в этом случае удостоверения применяются друг за другом, пока не будет создано требуемое изолированное хранилище. Допустимые группы: User+Assembly и User+Assembly+Domain. Такая группировка удостоверений полезна во многих разных приложениях.

Если данные хранятся в домене, пользователе и сборке, данные закрыты в этом коде в этой сборке могут получить доступ к данным. Хранилище данных также изолировано приложением, в котором оно выполняется, чтобы сборка не представляла потенциальную утечку путем предоставления данных другим приложениям.

Изоляция по сборке и пользователю может использоваться для пользовательских данных, которые применяются в нескольких приложениях; Например, сведения о лицензии или персональные данные пользователя (имя, учетные данные проверки подлинности и т. д.), которые не зависят от приложения.

IsolatedStorageContainment предоставляет флаги, определяющие, разрешено ли приложению использовать изолированное хранилище и, если да, какие сочетания удостоверений разрешены для его использования. Он также определяет, разрешено ли приложению хранить сведения в расположении, которое может перемещаться с пользователем (необходимо настроить Windows перемещаемые профили пользователей или перенаправление папок).

Применяется к

См. также раздел