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 | ストレージは、初めにコンピューターごとに分離され、次にアプリケーションごとに分離されます。 これは、任意のドメイン コンテキストでアクセスできるアプリケーションのデータ ストアを提供します。 アプリケーションごとのデータ コンパートメントでは、さらに信頼性が必要となります。これは、アプリケーション間に "トンネル" が発生し、特定の Web サイトでアプリケーションのデータ分離を損なう可能性があるためです。 |
ApplicationIsolationByRoamingUser | 101 | ストレージは、初めにユーザーごとに分離され、次にアプリケーションの証拠ごとに分離されます。 Windows ユーザー データ ローミングが有効になっている場合、ストレージは移動します。 これは、任意のドメイン コンテキストでアクセスできるアプリケーションのデータ ストアを提供します。 アプリケーションごとのデータ コンパートメントでは、さらに信頼性が必要となります。これは、アプリケーション間に "トンネル" が発生し、特定の Web サイトでアプリケーションのデータ分離を損なう可能性があるためです。 |
ApplicationIsolationByUser | 21 | ストレージは、初めにユーザーごとに分離され、次にアプリケーションごとに分離されます。 また、ストレージは、コンピューターごとにも分離されます。 これは、任意のドメイン コンテキストでアクセスできるアプリケーションのデータ ストアを提供します。 アプリケーションごとのデータ コンパートメントでは、さらに信頼性が必要となります。これは、アプリケーション間に "トンネル" が発生し、特定の Web サイトでアプリケーションのデータ分離を損なう可能性があるためです。 |
AssemblyIsolationByMachine | 64 | ストレージは、初めにコンピューターごとに分離され、次にコード アセンブリごとに分離されます。 これは、任意のドメイン コンテキストでアクセスできるアセンブリにデータ ストアを提供します。 アセンブリごとのデータ コンパートメントでは、さらに信頼性が必要となります。これは、アプリケーション間に "トンネル" が発生し、特定の Web サイトでアプリケーションのデータ分離を損なう可能性があるためです。 |
AssemblyIsolationByRoamingUser | 96 | ストレージは、初めにユーザーごとに分離され、次にアセンブリの証拠ごとに分離されます。 Windows ユーザー データ ローミングが有効になっている場合、ストレージは移動します。 これは、任意のドメイン コンテキストでアクセスできるアセンブリにデータ ストアを提供します。 アセンブリごとのデータ コンパートメントでは、さらに信頼性が必要となります。これは、アプリケーション間に "トンネル" が発生し、特定の Web サイトでアプリケーションのデータ分離を損なう可能性があるためです。 |
AssemblyIsolationByUser | 32 | ストレージは、初めにユーザーごとに分離され、次にコード アセンブリごとに分離されます。 また、ストレージは、コンピューターごとにも分離されます。 これは、任意のドメイン コンテキストでアクセスできるアセンブリにデータ ストアを提供します。 アセンブリごとのデータ コンパートメントでは、さらに信頼性が必要となります。これは、アプリケーション間に "トンネル" が発生し、特定の Web サイトでアプリケーションのデータ分離を損なう可能性があるためです。 |
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 関連の API が使われている場合、CAS の注釈は使われず、エラーが発生します。 開発者は、代わりの手段を見つけてセキュリティ タスクを実現する必要があります。
分離ストレージでは、証拠を使用して、アプリケーションまたはコンポーネントで使用する一意の記憶域を決定します。 アセンブリの ID によって、そのアセンブリで使用される仮想ファイル システムのルートが一意に決定されます。 したがって、ファイル システムやレジストリなどの共通リソースを共有する多くのアプリケーションやコンポーネントではなく、それぞれに固有のファイル領域が固有に割り当てられます。
分離ストレージを割り当てる際には、次の 4 つの基本的な分離スコープが使用されます。
User
- コードのスコープは、常に現在のユーザーに従って行われます。 同じアセンブリは、異なるユーザーによって実行されるときに、異なるストアを受け取ります。Machine
- コードは常にマシンに従ってスコープ指定されます。 同じコンピューター上の異なるユーザーによって実行されている場合、同じアセンブリは同じストアを受け取ります。Assembly
- コードは、厳密な名前 (Microsoft.Office.* や Microsoft.Office.Word など)、発行元 (公開キーに基づく)、URL (例: )、http://www.fourthcoffee.com/process/grind.htm
サイト別、ゾーン別に暗号によって識別されます。Domain
- コードは、アプリケーション ドメインに関連付けられている証拠に基づいて識別されます。 Web アプリケーション ID は、サイトの URL、または Web ページの URL、サイト、またはゾーンから派生します。 ローカル コード ID は、アプリケーション ディレクトリ パスに基づいています。
URL、サイト、ゾーンの定義については、および を参照してくださいUrlIdentityPermissionSiteIdentityPermission。ZoneIdentityPermission
これらの ID はグループ化されます。その場合、目的の分離ストレージが作成されるまで ID が次々に適用されます。 有効なグループ化は、User+Assembly と User+Assembly+Domain です。 この ID のグループ化は、多くの異なるアプリケーションで役立ちます。
データがドメイン、ユーザー、およびアセンブリによって格納されている場合、そのアセンブリ内のコードのみがデータにアクセスできるという点で、データはプライベートになります。 また、データ ストアは、実行されるアプリケーションによって分離されるため、アセンブリは他のアプリケーションにデータを公開することによってリークの可能性を表しません。
アセンブリとユーザーによる分離は、複数のアプリケーションに適用されるユーザー データに使用できます。たとえば、ライセンス情報や、アプリケーションに依存しないユーザーの個人情報 (名前、認証資格情報など) などです。
IsolatedStorageContainment では、アプリケーションが分離ストレージを使用できるかどうかを決定するフラグと、使用できる ID の組み合わせが公開されます。 また、アプリケーションがユーザーとローミングできる場所に情報を格納できるかどうかを決定します (Windows ローミング ユーザー プロファイルまたはフォルダー リダイレクトを構成する必要があります)。
適用対象
こちらもご覧ください
.NET