Como: Obter repositórios para o armazenamento isolado

Um repositório isolado expõe um sistema de arquivos virtual dentro de um compartimento de dados. A classe IsolatedStorageFile fornece vários métodos para interagir com um repositório isolado. Para criar e recuperar repositórios, o IsolatedStorageFile fornece três métodos estáticos:

  • GetUserStoreForAssembly retorna o armazenamento que é isolado pelo usuário e pelo assembly.

  • GetUserStoreForDomain retorna o armazenamento que é isolado pelo domínio e pelo assembly.

    Os dois métodos recuperam um repositório que pertence ao código do qual eles são chamados.

  • O método estático GetStore retorna um repositório isolado que é especificado passando uma combinação de parâmetros de escopo.

O exemplo de código a seguir retorna um repositório que é isolado pelo usuário, pelo assembly e pelo domínio.

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)

Você pode usar o método GetStore para especificar se um repositório deve ser usado com um perfil de usuário móvel. Para obter detalhes sobre como configurar isso, confira Tipos de isolamento.

Os repositórios isolados obtidos em diferentes assemblies são, por padrão, os repositórios diferentes. Você pode acessar o repositório de um assembly ou de um domínio diferente passando a evidência de assembly ou domínio nos parâmetros do método GetStore. Isso exige uma permissão para acessar o armazenamento isolado pela identidade do domínio do aplicativo. Para obter mais informações, confira as sobrecargas do método GetStore.

Os métodos GetUserStoreForAssembly, GetUserStoreForDomain e GetStore retornam um objeto IsolatedStorageFile. Para ajudá-lo a decidir qual tipo de isolamento é mais apropriado para sua situação, confira Tipos de isolamento. Quando você tem um objeto de arquivo de armazenamento isolado, você pode usar os métodos de armazenamento isolado para ler, gravar, criar e excluir arquivos e diretórios.

Não há mecanismos que impeçam o código de passar um objeto IsolatedStorageFile para o código que não tem acesso suficiente para obter o próprio repositório. As identidades de domínio e de assembly e as permissões de armazenamento isolado são verificadas apenas quando uma referência a um objeto IsolatedStorage é obtida, normalmente no método GetUserStoreForAssembly, GetUserStoreForDomain ou GetStore. Proteger referências a objetos IsolatedStorageFile é, portanto, a responsabilidade do código que usa essas referências.

Exemplo

O código a seguir fornece um exemplo simples de uma classe obtendo um repositório que é isolado pelo usuário e pelo assembly. O código pode ser alterado para recuperar um repositório que é isolado pelo usuário, domínio e assembly adicionando IsolatedStorageScope.Domain aos argumentos que o método GetStore passa.

Depois de executar o código, você pode confirmar se um repositório foi criado digitando StoreAdm /LIST na linha de comando. Essa ação executa a Ferramenta de armazenamento isolado (Storeadm.exe) e lista todos os atuais repositórios isolados para o usuário.

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

Confira também