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
- Наследование
- Атрибуты
Поля
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 перемещаемые профили пользователей или перенаправление папок).