分離ストレージ

分離ストレージは、コードと保存データを関連付ける標準化された方法を定義することにより、分離性と安全性を提供するデータ ストレージ機構です。 標準化には、ほかにも利点があります。 管理者は分離ストレージの操作用にデザインされたツールを使用して、ファイルのストレージ領域の構成、セキュリティ ポリシーの設定、および不要なデータの削除を行うことができます。 分離ストレージを使用すると、ファイル システムの安全な場所を指定するための固有のパスを指定する必要がなくなり、分離ストレージのアクセス権限を持たない他のアプリケーションからデータを保護できます。 アプリケーションのストレージ領域の場所を示すハードコーディングされた情報は不要になります。

このトピックは、次のセクションで構成されています。

  • データ コンパートメントとデータ ストア

  • 安全なアクセス

  • 分離ストレージの場所

  • 分離ストレージの作成、列挙、および削除

  • 分離ストレージのシナリオ

  • 関連トピック

  • 参照

データ コンパートメントとデータ ストア

アプリケーションでファイルにデータを格納する場合は、ファイル名とストレージの場所を慎重に選択して、ストレージの場所が他のアプリケーションに知られたり、無防備に破壊されたりする可能性を最小限に抑える必要があります。 このような問題を管理するための標準的なシステムが適切な場所に用意されていないと、ストレージの問題点を最小限に抑える特別な技術の開発が複雑になり、信頼できる結果が得られません。

分離ストレージを使用すると、データは常にユーザーおよびアセンブリ別に分離されます。 アセンブリの発生元または厳密な名前などの資格情報によって、アセンブリの ID が決定されます。 また、同様の資格情報を使用して、データをアプリケーション ドメイン別に分離することもできます。

分離ストレージを使用している場合、アプリケーションはコードの ID のいくつかの側面 (発行元や署名など) に関連付けられた固有のデータ コンパートメントにデータを保存します。 データ コンパートメントは抽象概念であり、特定の記憶場所ではありません。データ コンパートメントは、データが格納される実際のディレクトリ位置が含まれている、ストアと呼ばれる 1 つ以上の分離ストレージ ファイルで構成されています。 たとえば、アプリケーションがそのアプリケーションに関連付けられたデータ コンパートメントを持ち、ファイル システムのディレクトリがそのアプリケーションのデータを実際に保存するストアを実装します。 ストアには、ユーザー設定情報からアプリケーション状態まで、どのような種類のデータでも保存できます。 開発者にとって、データ コンパートメントの場所は明確ではありません。通常、ストアはクライアントに常駐しますが、サーバー アプリケーションがユーザーを偽装することによって機能し、分離ストアを使用して情報を格納することもあります。 また、サーバー上の分離ストレージには、情報と共にユーザーのローミング プロファイルを格納できます。これにより、情報はローミング ユーザーと共に移動します。

ページのトップへ

安全なアクセス

分離ストレージを使用すると、完全な権限を与えられていないアプリケーションでも、コンピューターのセキュリティ ポリシーによって制御される方法でデータを格納できます。 分離ストレージは、慎重に実行する必要のあるダウンロードされるコンポーネントに対しては、特に有益です。 標準の I/O 機構を使用してファイル システムにアクセスするこの種のコード アクセス許可がセキュリティ ポリシーによって与えられるのは非常にまれです。 ただし、既定では、ローカル コンピューター、ローカル ネットワーク、またはインターネットから実行するコードには、分離ストレージを使用する権限が与えられています。

管理者は、適切な信頼レベルに基づいて、アプリケーションやユーザーが利用できる分離ストレージの容量を制限できます。 また、管理者は、ユーザーの永続的なデータを完全に削除できます。 分離ストレージを作成したり、分離ストレージにアクセスしたりするには、適切な IsolatedStorageFilePermission を持っている必要があります。

分離ストレージにアクセスするには、必要なすべてのネイティブ プラットフォーム オペレーティング システム権限が必要です。 たとえば、Windows 2000 では、どのユーザーにファイル システムを使用する権限を与えるかを制御するアクセス制御リスト (ACL: Access Control List) の要件を満たしている必要があります。 .NET Framework のアプリケーションには、分離ストレージにアクセスするためのオペレーティング システム権限が既にあります。ただし、アプリケーションがプラットフォーム固有の偽装を行っていない場合だけです。 偽装している場合は、アプリケーションが偽装しているユーザー ID に対して分離ストレージにアクセスするための適切なオペレーティング システム権限が与えられていることをアプリケーションで確認する責任があります。 偽装によるアクセスは、Web から実行またはダウンロードされたコードで、特定のユーザーに関連付けられたストレージ領域の読み取りや書き込みを行う場合には都合のよい方法です。

ページのトップへ

分離ストレージの場所

オペレーティング システムのファイル システムを使用して分離ストレージの変化を検査すると役立つ場合があります。 また、開発者が分離ストレージ ファイルの場所を知る必要がある場合もあります。 分離ストレージ ファイルの場所は、オペレーティングによって異なります。 いくつかの一般的なオペレーティング システムで、分離ストレージが作成されるルート位置を次の表に示します。 このルート位置の下の Microsoft\IsolatedStorage のディレクトリを検索してください。 ファイル システムの分離ストレージを表示するには、隠しファイルやフォルダーが表示されるようにフォルダーの設定を変更する必要があります。

オペレーティング システム

ファイル システム上の位置

Windows 98、Windows ME - ユーザー プロファイルは使用不可

ローミングに対応したストア =

<SYSTEMROOT>\Application Data

ローミングに対応しないストア =WINDOWS\Local Settings\Application Data

Windows 98、Windows ME - ユーザー プロファイルは有効

ローミングに対応したストア =

<SYSTEMROOT>\Profiles\<user>\Application Data

ローミングに対応しないストア =Windows\Local Settings\Application Data

Windows NT 4.0

<SYSTEMROOT>\Profiles\<user>\Application Data

Windows NT 4.0 - Service Pack 4

ローミングに対応したストア =

<SYSTEMROOT>\Profiles\<user>\Application Data

ローミングに対応しないストア =

<SYSTEMROOT>\Profiles\<user>\Local Settings\Application Data

Windows 2000、Windows XP、Windows Server 2003 - Windows NT 4.0 からのアップグレード

ローミングに対応したストア =

<SYSTEMROOT>\Profiles\<user>\Application Data

ローミングに対応しないストア =

<SYSTEMROOT>\Profiles\<user>\Local Settings\Application Data

Windows 2000 - クリーン インストール (および Windows 98 と Windows NT 3.51 からのアップグレード)

ローミングに対応したストア =

<SYSTEMDRIVE>\Documents and Settings\<user>\Application Data

ローミングに対応しないストア =

<SYSTEMDRIVE>\Documents and Settings\<user>\Local Settings\Application Data

Windows XP、Windows Server 2003 - クリーン インストール (および Windows 2000 と Windows 98 からのアップグレード)

ローミングに対応したストア =

<SYSTEMDRIVE>\Documents and Settings\<user>\Application Data

ローミングに対応しないストア =

<SYSTEMDRIVE>\Documents and Settings\<user>\Local Settings\Application Data

Windows Vista

ローミングに対応したストア =

<SYSTEMDRIVE>\Users\<user>\AppData\Roaming

ローミングに対応しないストア =

<SYSTEMDRIVE>\Users\<user>\AppData\Local

ページのトップへ

分離ストレージの作成、列挙、および削除

分離ストレージに関する作業を実行するための主要なクラスとして、次の 3 つのクラスが用意されています。

  • IsolatedStorageFile クラス。IsolatedStorage の派生クラスであり、格納されたアセンブリおよびアプリケーション ファイルの基本的な管理を提供します。 IsolatedStorageFile クラスのインスタンスは、ファイル システム内に存在する 1 つのストアを表します。

  • IsolatedStorageFileStream クラス。System.IO.FileStream の派生クラスであり、ストア内のファイルへのアクセスを提供します。

  • IsolatedStorageScope クラス。適切な分離タイプのストアの作成および選択を可能にする列挙体です。

分離ストレージ クラスを使用すると、分離ストレージの作成、列挙、および削除を行うことができます。 これらの作業を実行するためのメソッドは、IsolatedStorageFile オブジェクトを通じて使用できます。 操作によっては、分離ストレージを管理する権限を表す IsolatedStorageFilePermission が必要です。また、ファイルやディレクトリにアクセスするためのオペレーティング システム権限が必要な場合もあります。 Microsoft Windows NT、Microsoft Windows 2000、Windows XP、および Windows Vista では、ファイルに対するアクセス制御リスト (ACL: Access Control List) の設定によって分離ストレージへのアクセスが禁止される場合があります。 現在のユーザーのすべてのストアを一覧表示または削除するなどの単純なストア管理の場合は、分離ストレージ ツール (Storeadm.exe) を使用することもできます。

分離ストレージに関する一般的な作業を具体的に説明する一連の例については、「関連トピック」に示す「方法」トピックを参照してください。 それぞれの例に、特定の作業の実例としてソース ファイルを示します。 セットアップ、コンパイル、および実行のための命令は、各例のメイン ページにあります。 C# 言語で記述された例だけを示します。

ページのトップへ

分離ストレージのシナリオ

分離ストレージは、さまざまな場面で使用されます。 最も区別しやすい 5 つの例を以下に説明します。

  • ダウンロードされたコントロール。 通常の I/O クラスを使用して、インターネットからダウンロードしたマネージ コード コントロールをハード ドライブに書き込むことはできません。ただし、分離ストレージを使用することにより、ユーザーの設定やアプリケーション状態を永続化できます。

  • 共有コンポーネント ストレージ。 アプリケーション間で共有されるコンポーネントで分離ストレージを使用することにより、データ ストアへのアクセスを制限できます。

  • サーバー ストレージ。 サーバー アプリケーションでは、アプリケーションに対する要求を行う多数のユーザーに個別のストアを提供するために分離ストレージを使用できます。 分離ストレージは常にユーザー別に分離されているため、サーバーは、要求を行うユーザーを偽装する必要があります。 サーバーがユーザーを偽装する場合、データは、プリンシパルの ID (アプリケーションがアプリケーションのユーザーを識別するために使用する ID と同じ ID) に基づいて分離されます。

  • ローミング。 アプリケーションでは、分離ストレージをローミング ユーザー プロファイルと共に使用することもできます。 分離ストレージとローミング ユーザー プロファイルを一緒に使用することにより、ユーザーの分離ストアは、プロファイルと共に移動します。

分離ストレージは上記の各シナリオで使用するのに適していますが、分離ストレージを "使用できない" 場合もあります。

  • 分離ストレージは高度に信頼されるコード、アンマネージ コード、またはコンピューターの信頼されるユーザーからは保護されていないので、暗号化されていないキーやパスワードのような重要な機密情報の格納には使用しないでください。

  • コードを格納する目的で分離ストレージを使用しないでください。

  • 管理者が制御する構成設定や配置設定を格納する目的で分離ストレージを使用しないでください。 ユーザー設定は管理者が制御しないので、構成設定とは見なされません。

今日の多くのアプリケーションでは、データベースを使用してデータを格納し、分離しています。データベースを使用する場合は、データベースの 1 行または複数の行で 1 人の特定のユーザーのストレージを表します。 ユーザー数が少ない場合、データベースを使用するオーバーヘッドが重要である場合、またはデータベース機能が存在しない場合は、データベースの代わりに分離ストレージを使用できます。 また、データベース内の行よりも複雑で柔軟性のあるストレージがアプリケーションに必要な場合でも、分離ストレージによって実行可能な選択肢が用意されます。

ページのトップへ

関連トピック

タイトル

説明

分離のタイプ

さまざまなタイプの分離を説明します。

方法 : 分離ストレージでストアを取得する

IsolatedStorageFile クラスを使用して、ユーザーおよびアセンブリ別に分離されたストアを取得する例を示します。

方法 : 分離ストレージでストアを列挙する

IsolatedStorageFile.GetEnumerator メソッドを使用して、特定のユーザーのすべての分離ストレージのサイズを計算する方法を示します。

方法 : 分離ストレージでストアを削除する

IsolatedStorageFile.Remove メソッドを 2 とおりの方法で使用して、分離ストアを削除する方法を示します。

方法: 分離ストレージの領域不足状態に備える

分離ストアの残りの領域を計測する方法を示します。

方法 : 分離ストレージでファイルおよびディレクトリを作成する

分離ストア内にファイルやディレクトリを作成する例を示します。

方法 : 分離ストレージ内でファイルおよびディレクトリを検索する

分離ストレージ内のディレクトリ構造やファイルを読み取る方法を示します。

方法 : 分離ストレージ内でファイルの読み取りと書き込みを行う

IsolatedStorageFile に文字列を書き込み、その文字列を読み取る例を示します。

方法 : 分離ストレージでファイルおよびディレクトリを削除する

分離ストレージのファイルやディレクトリを削除する方法を示します。

ファイルおよびストリーム入出力

ファイルとデータ ストリームに同期的および非同期的にアクセスする方法を説明します。

ページのトップへ

参照

System.IO.IsolatedStorage.IsolatedStorage