Procédure : obtenir des magasins pour le stockage isolé

Un magasin isolé expose un système de fichiers virtuel dans un compartiment de données. La classe IsolatedStorageFile fournit plusieurs méthodes pour interagir avec un magasin isolé. Pour créer et récupérer des magasins, IsolatedStorageFile propose trois méthodes statiques :

  • GetUserStoreForAssembly retourne un stockage isolé par utilisateur et par assembly.

  • GetUserStoreForDomain retourne un stockage isolé par domaine et par assembly.

    Les deux méthodes récupèrent un magasin qui appartient au code à partir duquel elles sont appelées.

  • La méthode statique GetStore retourne un magasin isolé spécifié en passant une combinaison de paramètres d’étendue.

Le code suivant retourne un magasin isolé par utilisateur, assembly et domaine.

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)

Vous pouvez utiliser la méthode GetStore pour spécifier qu’un magasin doit se déplacer avec un profil utilisateur itinérant. Pour plus d’informations sur la façon de configurer ce paramètre, consultez Types d’isolation.

Les magasins isolés obtenus à partir de différents assemblys sont, par défaut, des magasins différents. Vous pouvez accéder au magasin d’un domaine ou d’un assembly différent en passant la preuve d’assembly ou de domaine dans les paramètres de la méthode GetStore. Pour ce faire, l’autorisation d’accéder au stockage isolé par l’identité de domaine d’application est requise. Pour plus d'informations, consultez les surcharges de la méthode GetStore.

Les méthodes GetUserStoreForAssembly, GetUserStoreForDomain et GetStore retournent un objet IsolatedStorageFile. Pour vous aider à déterminer le type d’isolation le plus approprié à votre situation, consultez Types d’isolation. Lorsque vous disposez d’un objet de fichier de stockage isolé, vous pouvez utiliser les méthodes de stockage isolé pour lire, écrire, créer et supprimer des fichiers et répertoires.

Il n’existe aucun mécanisme qui empêche le code de passer un objet IsolatedStorageFile vers du code qui n’a pas de droits d’accès suffisants pour obtenir le magasin lui-même. Les identités de domaine et d’assembly et les autorisations pour le stockage isolé sont vérifiées uniquement lorsqu’une référence à un objet IsolatedStorage est obtenue, en général dans la méthode GetUserStoreForAssembly, GetUserStoreForDomain ou GetStore. La protection des références aux objets IsolatedStorageFile est, par conséquent, la responsabilité du code qui utilise ces références.

Exemple

Le code suivant fournit un exemple simple d’une classe obtenant un magasin isolé par utilisateur et par assembly. Le code peut ensuite être modifié afin de récupérer un magasin isolé par utilisateur, domaine et assembly en ajoutant IsolatedStorageScope.Domain aux arguments passés par la méthode GetStore.

Après avoir exécuté le code, vous pouvez confirmer qu’un magasin a été créé en tapant StoreAdm /LIST sur la ligne de commande. Cette commande exécute l’outil Stockage isolé (Storeadm.exe) et répertorie tous les magasins actuellement isolés pour l’utilisateur.

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

Voir aussi