如何:获取独立存储的存储区

独立存储区公开数据隔离舱中的虚拟文件系统。 IsolatedStorageFile 类提供许多与独立存储区交互的方法。 为了创建和检索存储区,IsolatedStorageFile 提供了三种静态方法:

  • 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 方法的参数中传递程序集或域证据,可以访问不同程序集或域的存储区。 这需要拥有权限,才能按应用域标识访问独立存储。 有关详细信息,请参阅 GetStore 方法重载。

GetUserStoreForAssemblyGetUserStoreForDomainGetStore 方法返回 IsolatedStorageFile 对象。 若要了解如何确定哪种隔离类型最适合自己的情况,请参阅隔离类型。 当您具有了独立存储文件对象时,您便可以使用独立存储方法来读取、写入、创建和删除文件及目录了。

没有一种机制可用来防止代码向没有足够访问权限来自己获取存储区的代码传递 IsolatedStorageFile 对象。 仅当获得对 IsolatedStorage 对象的引用时(通常在 GetUserStoreForAssemblyGetUserStoreForDomainGetStore 方法中),才会检查域和程序集标识以及独立存储权限。 因此,保护对 IsolatedStorageFile 对象的引用是使用这些引用的代码的责任。

示例

下面的代码提供了一个简单的类示例,它包含按用户和程序集隔离的存储区。 通过向 IsolatedStorageScope.Domain 方法传递的自变量添加 GetStore,此代码可更改为检索按用户、域和程序集隔离的存储区。

运行代码后,可以在命令行处键入“ 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

请参阅