隔离类型

对独立存储的访问始终仅限于创建隔离存储的用户。 为了实现这种类型的隔离,公共语言运行时使用与作系统识别的用户标识相同的概念,即与打开存储时运行代码的进程关联的标识。 此标识是经过身份验证的用户标识,但模拟可能会导致当前用户的标识动态更改。

根据与应用程序的域和程序集关联的标识,或者与单独的程序集关联的标识,对独立存储的访问也会受到限制。 运行时通过以下方式获取这些标识:

  • 域名身份代表应用程序的验证信息,对于 Web 应用程序而言,这个验证可能是完整的 URL。 对于 shell 托管的代码,域标识可能基于应用程序目录路径。 例如,如果可执行文件从路径 C:\Office\MyApp.exe运行,则域标识将 C:\Office\MyApp.exe。

  • 程序集标识是程序集的凭据。 这可能来自加密数字签名,可以是程序集的 强名称、程序集的软件发布者或其 URL 标识。 如果程序集具有强名称和软件发布者标识,则使用软件发布者标识。 如果程序集来自 Internet 且未签名,则使用 URL 标识。 有关程序集和强名称的详细信息,请参阅 使用程序集进行编程

  • 漫游商店随拥有漫游用户配置文件的用户一起移动。 文件将写入网络目录,并下载到用户登录的任何计算机。 有关漫游用户配置文件的详细信息,请参阅 IsolatedStorageScope.Roaming

通过将用户、域和程序集标识的概念组合在一起,独立存储可以通过以下方式隔离数据,每个存储都有自己的使用方案:

两种隔离选项都可以与漫游用户个人资料相结合使用。 有关详细信息,请参阅 “独立存储和漫游”部分。

下图演示了如何在不同的范围内隔离存储:

显示用户和程序集隔离的图。

除漫游存储外,独立存储始终由计算机隐式隔离,因为它使用位于给定计算机的本地存储设施。

重要

独立存储不适用于 Windows 8.x 应用商店应用。 请改用 Windows 运行时 API 中包含的命名空间中的 Windows.Storage 应用程序数据类来存储本地数据和文件。 有关详细信息,请参阅 Windows 开发人员中心中的 应用程序数据

用户和程序集的隔离

当需要从任何应用程序的域中访问使用数据存储的程序集时,用户和程序集的隔离是适当的。 通常,在这种情况下,隔离存储用于存储跨多个应用程序应用的数据,并且不绑定到任何特定应用程序,例如用户名或许可证信息。 若要访问由用户和程序集隔离的存储,必须信任代码才能在应用程序之间传输信息。 通常,在 Intranet 上允许按用户和程序集隔离,但不允许在 Internet 上隔离。 调用静态 IsolatedStorageFile.GetStore 方法,传入一个用户和程序集 IsolatedStorageScope,返回具有这种隔离的存储。

下面的代码示例检索由用户和程序集隔离的存储。 可以通过isoFile对象访问商店。

IsolatedStorageFile isoFile =
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
    IsolatedStorageScope.Assembly, null, null);
Dim isoFile As IsolatedStorageFile = _
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or _
        IsolatedStorageScope.Assembly, Nothing, Nothing)

有关使用证据参数的示例,请参阅 GetStore(IsolatedStorageScope, Evidence, Type, Evidence, Type)

该方法 GetUserStoreForAssembly 可用作快捷方式,如以下代码示例所示。 此快捷方式不能用于打开能够漫游的商店;在这种情况下使用 GetStore

IsolatedStorageFile isoFile = IsolatedStorageFile.GetUserStoreForAssembly();
Dim isoFile As IsolatedStorageFile = _
    IsolatedStorageFile.GetUserStoreForAssembly()

按用户、域和程序集隔离

如果应用程序使用需要专用数据存储的第三方程序集,则可以使用独立存储来存储专用数据。 按用户、域和程序集隔离可确保只有给定程序集中的代码可以访问数据,并且仅当程序集创建存储时正在运行的应用程序使用程序集时,以及仅当创建存储的用户运行应用程序时。 用户、域和程序集的隔离使第三方程序集不向其他应用程序泄露数据。 如果知道要使用隔离存储,但不确定要使用的隔离类型,则此隔离类型应该是默认选择。 调用静态 GetStore 方法 IsolatedStorageFile 并传入用户、域和程序集 IsolatedStorageScope 后,将返回具有这种隔离的存储。

下面的代码示例检索由用户、域和程序集隔离的存储区。 可以通过isoFile对象访问商店。

IsolatedStorageFile isoFile =
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
        IsolatedStorageScope.Domain |
        IsolatedStorageScope.Assembly, null, null);
Dim isoFile As IsolatedStorageFile = _
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or _
        IsolatedStorageScope.Domain Or _
        IsolatedStorageScope.Assembly, Nothing, Nothing)

另一种方法可用作快捷方式,如以下代码示例所示。 此快捷方式不能用于打开能够漫游的商店;在这种情况下使用 GetStore

IsolatedStorageFile isoFile = IsolatedStorageFile.GetUserStoreForDomain();
Dim isoFile As IsolatedStorageFile = _
    IsolatedStorageFile.GetUserStoreForDomain()

独立存储和漫游

漫游用户配置文件是一项 Windows 功能,使用户能够在网络上设置标识,并使用该标识登录到任何网络计算机,从而传递所有个性化设置。 使用独立存储的程序集可以指定用户的隔离存储应随漫游用户配置文件一起移动。 漫游可以与用户和程序集隔离结合使用,也可以与用户、域和程序集隔离结合使用。 如果不使用漫游范围,即使启用了漫游用户配置文件,存储也不会随之漫游。

下面的代码示例检索由用户和程序集隔离的漫游存储。 可以通过isoFile对象访问商店。

IsolatedStorageFile isoFile =
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
        IsolatedStorageScope.Assembly |
        IsolatedStorageScope.Roaming, null, null);
Dim isoFile As IsolatedStorageFile = _
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or _
        IsolatedStorageScope.Assembly Or _
        IsolatedStorageScope.Roaming, Nothing, Nothing)

可以添加域范围,以创建由用户、域和应用程序隔离的漫游存储。 下面的代码示例演示了这一点。

IsolatedStorageFile isoFile =
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
        IsolatedStorageScope.Assembly | IsolatedStorageScope.Domain |
        IsolatedStorageScope.Roaming, null, null);
Dim isoFile As IsolatedStorageFile = _
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or _
        IsolatedStorageScope.Assembly Or IsolatedStorageScope.Domain Or _
        IsolatedStorageScope.Roaming, Nothing, Nothing)

另请参阅