IsolatedStorageContainment Перечисление
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Внимание!
Code Access Security is not supported or honored by the runtime.
Указывает разрешенное использование изолированного хранилища.
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
- Наследование
- Атрибуты
Поля
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.
Комментарии
Внимание!
Безопасность доступа к коду (CAS) не рекомендуется использовать во всех версиях платформа .NET Framework и .NET. В последних версиях .NET заметки CAS не учитываются и при использовании API, связанных с CAS, возникают ошибки. Разработчикам следует искать альтернативные средства для выполнения задач безопасности.
Изолированное хранилище использует доказательства для определения уникальной области хранения для использования приложением или компонентом. Удостоверение сборки однозначно определяет корень виртуальной файловой системы для использования этой сборкой. Таким образом, вместо того, чтобы многие приложения и компоненты совместно используют общий ресурс, например файловую систему или реестр, каждому из них назначена собственная область файлов.
При назначении изолированного хранилища используются четыре основные области изоляции:
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 или перенаправление папок).