IsolatedStorageContainment Wyliczenie
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Przestroga
Code Access Security is not supported or honored by the runtime.
Określa dozwolone użycie izolowanego magazynu.
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
- Dziedziczenie
- Atrybuty
Pola
AdministerIsolatedStorageByUser | 112 | Nieograniczona możliwość administrowania sklepem użytkownika. Umożliwia przeglądanie i usuwanie całego magazynu użytkownika, ale nie dostęp do odczytu inny niż tożsamość domeny/zestawu użytkownika. |
ApplicationIsolationByMachine | 69 | Magazyn jest najpierw izolowany przez komputer, a następnie przez aplikację. Zapewnia to magazyn danych dla aplikacji, która jest dostępna w dowolnym kontekście domeny. Przedział danych dla aplikacji wymaga dodatkowego zaufania, ponieważ potencjalnie zapewnia "tunel" między aplikacjami, które mogłyby naruszyć izolację danych aplikacji w określonych witrynach sieci Web. |
ApplicationIsolationByRoamingUser | 101 | Magazyn jest najpierw izolowany przez użytkownika, a następnie przez dowody aplikacji. Usługa Storage będzie poruszać się po włączeniu roamingu danych użytkownika systemu Windows. Zapewnia to magazyn danych dla aplikacji, która jest dostępna w dowolnym kontekście domeny. Przedział danych dla aplikacji wymaga dodatkowego zaufania, ponieważ potencjalnie zapewnia "tunel" między aplikacjami, które mogłyby naruszyć izolację danych aplikacji w określonych witrynach sieci Web. |
ApplicationIsolationByUser | 21 | Magazyn jest najpierw izolowany przez użytkownika, a następnie przez aplikację. Magazyn jest również izolowany przez komputer. Zapewnia to magazyn danych dla aplikacji, która jest dostępna w dowolnym kontekście domeny. Przedział danych dla aplikacji wymaga dodatkowego zaufania, ponieważ potencjalnie zapewnia "tunel" między aplikacjami, które mogłyby naruszyć izolację danych aplikacji w określonych witrynach sieci Web. |
AssemblyIsolationByMachine | 64 | Magazyn jest najpierw izolowany przez komputer, a następnie przez zestaw kodu. Zapewnia to magazyn danych dla zestawu, który jest dostępny w dowolnym kontekście domeny. Przedział danych dla zestawu wymaga dodatkowego zaufania, ponieważ potencjalnie zapewnia "tunel" między aplikacjami, które mogłyby naruszyć izolację danych aplikacji w określonych witrynach sieci Web. |
AssemblyIsolationByRoamingUser | 96 | Magazyn jest najpierw izolowany przez użytkownika, a następnie przez dowody zestawu. Usługa Storage będzie wędrować po włączeniu roamingu danych użytkownika systemu Windows. Zapewnia to magazyn danych dla zestawu, który jest dostępny w dowolnym kontekście domeny. Przedział danych dla zestawu wymaga dodatkowego zaufania, ponieważ potencjalnie zapewnia "tunel" między aplikacjami, które mogłyby naruszyć izolację danych aplikacji w określonych witrynach sieci Web. |
AssemblyIsolationByUser | 32 | Magazyn jest najpierw izolowany przez użytkownika, a następnie przez zestaw kodu. Magazyn jest również izolowany przez komputer. Zapewnia to magazyn danych dla zestawu, który jest dostępny w dowolnym kontekście domeny. Przedział danych dla zestawu wymaga dodatkowego zaufania, ponieważ potencjalnie zapewnia "tunel" między aplikacjami, które mogłyby naruszyć izolację danych aplikacji w określonych witrynach sieci Web. |
DomainIsolationByMachine | 48 | Magazyn jest najpierw izolowany przez komputer, a następnie przez domenę i zestaw. Dostęp do danych można uzyskać tylko w kontekście tej samej aplikacji i tylko wtedy, gdy jest uruchamiany na tym samym komputerze. Jest to przydatne, gdy zestaw innej firmy chce zachować prywatny magazyn danych. |
DomainIsolationByRoamingUser | 80 | Magazyn jest najpierw izolowany przez użytkownika, a następnie przez domenę i zestaw. Usługa Storage będzie wędrować po włączeniu roamingu danych użytkownika systemu Windows. Dostęp do danych można uzyskać tylko w kontekście tej samej aplikacji i tylko wtedy, gdy jest uruchamiany przez tego samego użytkownika. Jest to przydatne, gdy zestaw innej firmy chce zachować prywatny magazyn danych. |
DomainIsolationByUser | 16 | Magazyn jest najpierw izolowany przez użytkownika, a następnie przez domenę i zestaw. Magazyn jest również izolowany przez komputer. Dostęp do danych można uzyskać tylko w kontekście tej samej aplikacji i tylko wtedy, gdy jest uruchamiany przez tego samego użytkownika. Jest to przydatne, gdy zestaw innej firmy chce zachować prywatny magazyn danych. |
None | 0 | Korzystanie z izolowanego magazynu jest niedozwolone. |
UnrestrictedIsolatedStorage | 240 | Korzystanie z izolowanego magazynu jest dozwolone bez ograniczeń. Kod ma pełny dostęp do dowolnej części magazynu użytkowników, niezależnie od tożsamości domeny lub zestawu. Użycie izolowanego magazynu obejmuje możliwość wyliczania zawartości izolowanego magazynu danych magazynu. |
Przykłady
W tym przykładzie pokazano, jak poinformować clR, że kod w tym zestawie wymaga IsolatedStoragePermission , a także pokazuje, jak zapisywać i odczytywać z izolowanego magazynu.
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.
Uwagi
Przestroga
Zabezpieczenia dostępu do kodu (CAS) zostały przestarzałe we wszystkich wersjach .NET Framework i .NET. Najnowsze wersje platformy .NET nie honorują adnotacji CAS i generują błędy, jeśli są używane interfejsy API związane z usługą CAS. Deweloperzy powinni szukać alternatywnych sposobów wykonywania zadań zabezpieczeń.
Magazyn izolowany używa dowodów w celu określenia unikatowego obszaru magazynu do użycia przez aplikację lub składnik. Tożsamość zestawu jednoznacznie określa katalog główny wirtualnego systemu plików do użycia przez ten zestaw. W związku z tym zamiast wielu aplikacji i składników współużytkować wspólny zasób, taki jak system plików lub rejestr, każdy z nich ma z natury przypisany własny obszar plików.
Podczas przypisywania izolowanego magazynu są używane cztery podstawowe zakresy izolacji:
User
— Kod jest zawsze w zakresie zgodny z bieżącym użytkownikiem. Ten sam zestaw będzie otrzymywać różne magazyny podczas uruchamiania przez różnych użytkowników.Machine
— Kod jest zawsze w zakresie zgodnym z maszyną. Ten sam zestaw otrzyma te same magazyny, gdy będą uruchamiane przez różnych użytkowników na tej samej maszynie.Assembly
— Kod jest identyfikowany kryptograficznie przez silną nazwę (na przykład Microsoft.Office.* lub Microsoft.Office.Word), przez wydawcę (na podstawie klucza publicznego), według adresu URL (na przykładhttp://www.fourthcoffee.com/process/grind.htm
), witryny lub strefy.Domain
— Kod jest identyfikowany na podstawie dowodów skojarzonych z domeną aplikacji. Tożsamość aplikacji internetowej pochodzi z adresu URL witryny lub według adresu URL, witryny lub strefy strony sieci Web. Tożsamość kodu lokalnego jest oparta na ścieżce katalogu aplikacji.
Aby uzyskać definicje adresów URL, witryny i strefy, zobacz UrlIdentityPermission, SiteIdentityPermissioni ZoneIdentityPermission.
Te tożsamości są grupowane razem, w tym przypadku tożsamości są stosowane po drugim do momentu utworzenia żądanego izolowanego magazynu. Prawidłowe grupowania to User+Assembly i User+Assembly+Domain. Ta grupa tożsamości jest przydatna w wielu różnych aplikacjach.
Jeśli dane są przechowywane przez domenę, użytkownika i zestaw, dane są prywatne w tym tylko kodzie w tym zestawie mogą uzyskiwać dostęp do danych. Magazyn danych jest również izolowany przez aplikację, w której działa, dzięki czemu zestaw nie reprezentuje potencjalnego wycieku przez ujawnienie danych innym aplikacjom.
Izolacja według zestawu i użytkownika może służyć do danych użytkownika, które mają zastosowanie w wielu aplikacjach; na przykład informacje o licencji lub dane osobowe użytkownika (nazwa, poświadczenia uwierzytelniania itd.), które są niezależne od aplikacji.
IsolatedStorageContainment uwidacznia flagi, które określają, czy aplikacja może używać izolowanego magazynu, a jeśli tak, które kombinacje tożsamości mogą jej używać. Określa również, czy aplikacja może przechowywać informacje w lokalizacji, która może wędrować z użytkownikiem (należy skonfigurować profile użytkowników mobilnych systemu Windows lub przekierowanie folderów).