IsolatedStorageContainment 열거형
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
주의
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 | 사용자 저장소에 대한 무한 관리 기능입니다. 전체 사용자 저장소를 찾아 삭제할 수는 있지만 사용자의 고유한 도메인/어셈블리 ID 이외는 읽을 수 없습니다. |
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 | 격리된 스토리지를 제한 없이 사용할 수 있습니다. 도메인 또는 어셈블리의 ID에 관계 없이 사용자 저장소의 모든 부분에 대한 모든 액세스 권한이 코드에 있습니다. 격리된 스토리지의 이러한 용도에는 격리된 스토리지 데이터 저장소의 콘텐츠를 열거하는 기능이 포함됩니다. |
예제
이 예제에서는 이 어셈블리의 코드에 IsolatedStoragePermission을 필요로 한다고 CLR에 지시하는 방법과 격리된 스토리지에서 쓰고 읽는 방법도 보여줍니다.
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 주석을 준수하지 않으며 CAS 관련 API를 사용하는 경우 오류가 발생합니다. 개발자는 보안 작업을 수행하는 대체 수단을 찾아야 합니다.
격리 된 스토리지는 애플리케이션이 나 구성 요소 사용에 대 한 고유한 스토리지 영역을 확인 하려면 증거를 사용 합니다. 어셈블리의 ID는 해당 어셈블리에서 사용할 가상 파일 시스템의 루트를 고유하게 결정합니다. 따라서 많은 애플리케이션 및 구성 요소 파일 시스템이 나 레지스트리 같은 일반적인 리소스를 공유 하는 대신 기본적으로 할당 된 파일 영역 자체에 각각 있습니다.
격리된 스토리지를 할당할 때 네 가지 기본 격리 범위가 사용됩니다.
User
- 코드는 항상 현재 사용자에 따라 범위가 지정됩니다. 동일한 어셈블리는 다른 사용자가 실행할 때 다른 저장소를 받습니다.Machine
- 코드는 항상 컴퓨터에 따라 범위가 지정됩니다. 동일한 컴퓨터에서 다른 사용자가 실행할 때 동일한 어셈블리가 동일한 저장소를 받게 됩니다.Assembly
- 코드는 강력한 이름(예: Microsoft.Office.* 또는 Microsoft.Office.Word), 게시자(공개 키 기반), URL(예http://www.fourthcoffee.com/process/grind.htm
: ), 사이트 또는 영역별로 암호화하여 식별됩니다.Domain
코드는 연결 된 애플리케이션 도메인 증명 정보를 기반으로 식별 됩니다. 웹 애플리케이션 id는 사이트의 URL 또는 웹 페이지의 URL, 사이트 또는 영역에서 파생 됩니다. 로컬 코드 id는 애플리케이션 디렉터리 경로 기반으로 합니다.
URL, 사이트 및 영역에 대한 정의는 , 및 를 SiteIdentityPermissionZoneIdentityPermission참조하세요UrlIdentityPermission.
이러한 ID는 함께 그룹화되며, 이 경우 원하는 격리된 스토리지가 만들어질 때까지 순차적으로 적용됩니다. 유효한 그룹화는 User+Assembly 및 User+Assembly+Domain입니다. 이 그룹화 id의 다양 한 애플리케이션에 유용합니다.
데이터가 도메인, 사용자 및 어셈블리에 의해 저장되는 경우 해당 어셈블리의 코드만 데이터에 액세스할 수 있는 프라이빗 데이터입니다. 데이터 저장소가 실행 되는 애플리케이션 별로 격리 되기도 어셈블리를 다른 애플리케이션에 데이터를 노출 하 여 잠재적인 누수를 나타내지 않도록 합니다.
여러 애플리케이션에서 적용 되는 사용자 데이터에 대 한 어셈블리 및 사용자 격리를 사용할 수 있습니다. 예를 들어, 정보 또는 사용자의 개인 정보 (이름, 인증 자격 증명 및 등)는 애플리케이션의 독립적인 라이선스.
IsolatedStorageContainment 애플리케이션 격리 된 스토리지를 사용 하도록 허용 되는지 여부를 결정 하는 플래그를 노출 및 사용 하는 id 조합을 수, 하는 경우. 또한 정보 (Windows 로밍 사용자 프로필이 나 폴더 리디렉션을 구성 해야 합니다) 사용자와 로밍할 수 있는 위치에 저장 하는 애플리케이션 허용 되는지 여부를 결정 합니다.
적용 대상
추가 정보
.NET