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

分離ストアでは、データ コンパートメント内の仮想ファイル システムを公開します。 IsolatedStorageFile クラスでは、分離ストアと対話するためのいくつかのメソッドが提供されます。 ストアを作成して取得するために、IsolatedStorageFile では次の 3 つの静的メソッドが提供されます。

  • GetUserStoreForAssembly は、ユーザーおよびアセンブリ別に分離されるストレージを返します。

  • GetUserStoreForDomain は、ドメインおよびアセンブリ別に分離されるストレージを返します。

    両方のメソッドで、呼び出し元のコードに属するストアが取得されます。

  • 静的メソッド GetStore は、スコープ パラメーターの組み合わせを渡すことで指定される分離ストアを返します。

次のコードでは、ユーザー、アセンブリ、およびドメイン別に分離されるストアを返します。

IsolatedStorageFile^ isoStore = IsolatedStorageFile::GetStore(IsolatedStorageScope::User |
    IsolatedStorageScope::Assembly | IsolatedStorageScope::Domain, (Type ^)nullptr, (Type ^)nullptr);
IsolatedStorageFile isoStore = IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
    IsolatedStorageScope.Assembly | IsolatedStorageScope.Domain, null, null);
Dim isoStore As IsolatedStorageFile = IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or
    IsolatedStorageScope.Assembly Or IsolatedStorageScope.Domain, Nothing, Nothing)

GetStore メソッドを使用して、ストアが移動ユーザー プロファイルと共にローミングするように指定することができます。 この設定方法の詳細については、「分離のタイプ」を参照してください。

異なるアセンブリ内から取得される分離ストアは、既定では異なるストアとなります。 GetStore メソッドのパラメーターでアセンブリまたはドメインの証拠を渡すことで、異なるアセンブリまたはドメインのストアにアクセスできます。 この場合、アプリケーション ドメイン ID で分離ストレージにアクセスするアクセス許可が必要になります。 詳細については、GetStore メソッドのオーバーロードに関するページを参照してください。

GetUserStoreForAssemblyGetUserStoreForDomain、および GetStore メソッドは IsolatedStorageFile オブジェクトを返します。 状況に最適な分離タイプの判別に役立つ「分離のタイプ」を参照してください。 分離ストレージ ファイル オブジェクトがある場合は、分離ストレージ メソッドを使用して、ファイルとディレクトリの読み取り、書き込み、作成、削除を行うことができます。

ストア自体を取得するのに十分なアクセス権がないコードに IsolatedStorageFile オブジェクトを渡さないようにするためのメカニズムはありません。 ドメインとアセンブリの ID と分離ストレージのアクセス許可が確認されるのは、通常、GetUserStoreForAssemblyGetUserStoreForDomain、または GetStore メソッドで IsolatedStorage オブジェクトへの参照が取得される場合のみです。 したがって、IsolatedStorageFile への参照を保護するのは、これらの参照を使用するコードの役目です。

次のコードでは、ユーザーとアセンブリ別に分離されるストアを取得するクラスの単純な例を示します。 GetStore メソッドが渡す引数に IsolatedStorageScope.Domain を追加することで、ユーザー、ドメイン、およびアセンブリ別に分離されるストアを取得するようにコードを変更できます。

コードを実行したら、コマンド ラインで「StoreAdm /LIST」と入力して、ストアが作成されたことを確認することができます。 これにより、分離ストレージ ツール (Storeadm.exe) が実行され、ユーザーの現在の分離ストアがすべてリストされます。

using namespace System;
using namespace System::IO::IsolatedStorage;

public ref class ObtainingAStore
{
public:
    static void Main()
    {
        // Get a new isolated store for this assembly and put it into an
        // isolated store object.

        IsolatedStorageFile^ isoStore = IsolatedStorageFile::GetStore(IsolatedStorageScope::User |
            IsolatedStorageScope::Assembly, (Type ^)nullptr, (Type ^)nullptr);
    }
};
using System;
using System.IO.IsolatedStorage;

public class ObtainingAStore
{
    public static void Main()
    {
        // Get a new isolated store for this assembly and put it into an
        // isolated store object.

        IsolatedStorageFile isoStore = IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
            IsolatedStorageScope.Assembly, null, null);
    }
}
Imports System.IO.IsolatedStorage

Public Class ObtainingAStore
    Public Shared Sub Main()
        ' Get a new isolated store for this assembly and put it into an
        ' isolated store object.

        Dim isoStore As IsolatedStorageFile = IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or
            IsolatedStorageScope.Assembly, Nothing, Nothing)
    End Sub
End Class

関連項目