Tipi di isolamentoTypes of Isolation

L'accesso allo spazio di memorizzazione isolato è sempre limitato all'utente che l'ha creata.Access to isolated storage is always restricted to the user who created it. Per implementare questo tipo di isolamento, Common Language Runtime usa la stessa nozione di identità utente riconosciuta dal sistema operativo, ovvero l'identità associata al processo in cui è in esecuzione il codice quando viene aperto lo spazio di memorizzazione.To implement this type of isolation, the common language runtime uses the same notion of user identity that the operating system recognizes, which is the identity associated with the process in which the code is running when the store is opened. Sebbene sia un'identità utente autenticata, è possibile che con la rappresentazione l'identità dell'utente corrente venga modificata dinamicamente.This identity is an authenticated user identity, but impersonation can cause the identity of the current user to change dynamically.

L'accesso allo spazio di memorizzazione isolato viene limitato anche in base all'identità associata all'assembly e al dominio dell'applicazione oppure solo all'assembly.Access to isolated storage is also restricted according to the identity associated with the application's domain and assembly, or with the assembly alone. Il runtime ottiene queste identità nei modi seguenti:The runtime obtains these identities in the following ways:

  • L'identità del dominio rappresenta l'evidenza dell'applicazione, che nel caso di un'applicazione Web può coincidere con l'URL completo.Domain identity represents the evidence of the application, which in the case of a web application might be the full URL. Per il codice su shell, l'identità del dominio può essere basata sul percorso di directory dell'applicazione.For shell-hosted code, the domain identity might be based on the application directory path. Se ad esempio il file eseguibile viene eseguito dal percorso C:\Office\MyApp.exe, l'identità del dominio sarà C:\Office\MyApp.exe.For example, if the executable runs from the path C:\Office\MyApp.exe, the domain identity would be C:\Office\MyApp.exe.

  • L'identità dell'assembly è l'evidenza dell'assembly.Assembly identity is the evidence of the assembly. Può derivare da una firma digitale crittografica, che può corrispondere al nome sicuro dell'assembly, all'editore dell'assembly oppure all'identità del relativo URL.This might come from a cryptographic digital signature, which can be the assembly's strong name, the software publisher of the assembly, or its URL identity. Se un assembly dispone sia di un'identità fornita dal nome sicuro sia di un'identità fornita dall'editore, verrà usata quella fornita dall'editore.If an assembly has both a strong name and a software publisher identity, then the software publisher identity is used. Se l'assembly proviene da Internet e non è firmato, verrà usata invece l'identità dell'URL.If the assembly comes from the Internet and is unsigned, the URL identity is used. Per altre informazioni sugli assembly e sui nomi sicuri, vedere Programmazione con gli assembly.For more information about assemblies and strong names, see Programming with Assemblies.

  • Gli spazi di memorizzazione roaming si spostano con gli utenti che dispongono di un profilo di utente roaming.Roaming stores move with a user that has a roaming user profile. I file vengono scritti in una directory di rete e scaricati su qualsiasi computer a cui l'utente accede.Files are written to a network directory and are downloaded to any computer the user logs into. Per altre informazioni sui profili di utente roaming, vedere IsolatedStorageScope.Roaming.For more information about roaming user profiles, see IsolatedStorageScope.Roaming.

Combinando i concetti di identità di utente, dominio e assembly, lo spazio di memorizzazione isolato può isolare i dati nei modi seguenti, ciascuno dei quali presenta specifici scenari di utilizzo:By combining the concepts of user, domain, and assembly identity, isolated storage can isolate data in the following ways, each of which has its own usage scenarios:

Ognuno di questi isolamenti può essere combinato con un profilo di utente roaming.Either of these isolations can be combined with a roaming user profile. Per altre informazioni, vedere la sezione Spazio di memorizzazione isolato e roaming.For more information, see the section Isolated Storage and Roaming.

La figura seguente illustra come vengono isolati gli archivi in ambiti diversi:The following illustration demonstrates how stores are isolated in different scopes:

Diagramma che illustra l'isolamento in base a utente e assembly.

Si osservi che, fatta eccezione per gli spazi di memorizzazione roaming, lo spazio di memorizzazione isolato viene sempre isolato implicitamente in base al computer, poiché usa le funzioni di memorizzazione locali del computer in uso.Note that except for roaming stores, isolated storage is always implicitly isolated by computer because it uses the storage facilities that are local to a given computer.

Importante

Lo spazio di memorizzazione isolato non è disponibile per le applicazioni Windows 8.x StoreWindows 8.x Store .Isolated storage is not available for Windows 8.x StoreWindows 8.x Store apps. Al contrario, usare le classi di dati dell'applicazione negli spazi dei nomi Windows.Storage inclusi nell'API di Windows Runtime per archiviare dati e file locali.Instead, use the application data classes in the Windows.Storage namespaces included in the Windows Runtime API to store local data and files. Per altre informazioni, vedere Dati dell'applicazione nel Centro per sviluppatori Windows.For more information, see Application data in the Windows Dev Center.

Isolamento in base all'utente e all'assemblyIsolation by User and Assembly

L'isolamento in base all'utente e all'assembly è indicato quando si vuole che l'assembly che usa l'archivio dati sia accessibile da qualsiasi dominio dell'applicazione.When the assembly that uses the data store needs to be accessible from any application's domain, isolation by user and assembly is appropriate. In genere, in questa situazione, lo spazio di memorizzazione isolato viene usato per memorizzare dati che riguardano più applicazioni e non una singola applicazione, come il nome utente e informazioni sulla licenza.Typically, in this situation, isolated storage is used to store data that applies across multiple applications and is not tied to any particular application, such as the user's name or license information. Per poter accedere a uno spazio di memorizzazione isolato in base all'utente e all'assembly, è necessario che il codice sia considerato attendibile per il trasferimento di informazioni tra applicazioni diverse.To access storage isolated by user and assembly, code must be trusted to transfer information between applications. In genere, l'isolamento in base all'utente e all'assembly è consentito in reti Intranet, ma non in Internet.Typically, isolation by user and assembly is allowed on intranets but not on the Internet. Chiamando il metodo statico IsolatedStorageFile.GetStore e passando un utente e un assembly IsolatedStorageScope, viene restituito uno spazio di memorizzazione con questo tipo di isolamento.Calling the static IsolatedStorageFile.GetStore method and passing in a user and an assembly IsolatedStorageScope returns storage with this kind of isolation.

L'esempio di codice seguente recupera uno spazio di memorizzazione isolato in base all'utente e all'assembly.The following code example retrieves a store that is isolated by user and assembly. È possibile accedere allo spazio di memorizzazione tramite l'oggetto isoFile.The store can be accessed through the isoFile object.

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

Per un esempio in cui vengono usati i parametri di evidenza, vedere GetStore(IsolatedStorageScope, Evidence, Type, Evidence, Type).For an example that uses the evidence parameters, see GetStore(IsolatedStorageScope, Evidence, Type, Evidence, Type).

Come alternativa è disponibile il metodo GetUserStoreForAssembly, come illustrato nell'esempio di codice seguente.The GetUserStoreForAssembly method is available as a shortcut, as shown in the following code example. Questa alternativa, tuttavia, non può essere usata per aprire spazi di memorizzazione in cui può essere abilitato il roaming. In questi casi, usare GetStore.This shortcut cannot be used to open stores that are capable of roaming; use GetStore in such cases.

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

Isolamento in base all'utente, al dominio e all'assemblyIsolation by User, Domain, and Assembly

Se un'applicazione usa un assembly di terze parti che richiede un archivio dati privato, è possibile usare lo spazio di memorizzazione isolato per memorizzare i dati privati.If your application uses a third-party assembly that requires a private data store, you can use isolated storage to store the private data. L'isolamento in base all'utente, al dominio e all'assembly garantisce che ai dati possa accedere solo il codice di un determinato assembly, solo quando l'assembly viene usato dall'applicazione che era in esecuzione nel momento in cui l'assembly ha creato lo spazio di memorizzazione e solo quando l'applicazione viene eseguita dall'utente per il quale è stato creato lo spazio di memorizzazione.Isolation by user, domain, and assembly ensures that only code in a given assembly can access the data, and only when the assembly is used by the application that was running when the assembly created the store, and only when the user for whom the store was created runs the application. L'isolamento in base all'utente, al dominio e all'assembly impedisce che l'assembly di terze parti passi i dati ad altre applicazioni.Isolation by user, domain, and assembly keeps the third-party assembly from leaking data to other applications. È opportuno scegliere questo tipo di isolamento se si è certi di voler usare lo spazio di memorizzazione isolato, ma non si è sicuri del tipo di isolamento da usare.This isolation type should be your default choice if you know that you want to use isolated storage but are not sure which type of isolation to use. Chiamando il metodo statico GetStore di IsolatedStorageFile e passando un utente, un dominio e un assembly, IsolatedStorageScope restituisce lo spazio di memorizzazione con questo tipo di isolamento.Calling the static GetStore method of IsolatedStorageFile and passing in a user, domain, and assembly IsolatedStorageScope returns storage with this kind of isolation.

Nell'esempio di codice seguente viene recuperato uno spazio di memorizzazione isolato in base all'utente, al dominio e all'assembly.The following code example retrieves a store isolated by user, domain, and assembly. È possibile accedere allo spazio di memorizzazione tramite l'oggetto isoFile.The store can be accessed through the isoFile object.

IsolatedStorageFile^ isoFile =
    IsolatedStorageFile::GetStore(IsolatedStorageScope::User |
        IsolatedStorageScope::Domain |
        IsolatedStorageScope::Assembly, (Type^)nullptr, (Type^)nullptr);
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)

Come alternativa è disponibile un altro metodo, come illustrato nell'esempio di codice seguente.Another method is available as a shortcut, as shown in the following code example. Questa alternativa, tuttavia, non può essere usata per aprire spazi di memorizzazione in cui può essere abilitato il roaming. In questi casi, usare GetStore.This shortcut cannot be used to open stores that are capable of roaming; use GetStore in such cases.

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

Spazio di memorizzazione isolato e roamingIsolated Storage and Roaming

I profili utente mobili sono una funzionalità di Windows che consente a un utente di impostare un'identità in una rete e usarla per accedere a qualsiasi computer di rete, conservando tutte le impostazioni personalizzate.Roaming user profiles are a Windows feature that enables a user to set up an identity on a network and use that identity to log into any network computer, carrying over all personalized settings. Un assembly che usa lo spazio di memorizzazione isolato può specificare che lo spazio di memorizzazione isolato dell'utente si sposti con il profilo utente mobile.An assembly that uses isolated storage can specify that the user's isolated storage should move with the roaming user profile. Il roaming può essere usato con l'isolamento in base all'utente e all'assembly oppure con l'isolamento in base all'utente, al dominio e all'assembly.Roaming can be used in conjunction with isolation by user and assembly or with isolation by user, domain, and assembly. Se non viene usato un ambito di roaming, gli spazi di memorizzazione non si spostano neppure se viene usato un profilo utente mobile.If a roaming scope is not used, stores will not roam even if a roaming user profile is used.

Nell'esempio di codice seguente viene recuperato uno spazio di memorizzazione di roaming isolato in base all'utente e all'assembly.The following code example retrieves a roaming store isolated by user and assembly. È possibile accedere allo spazio di memorizzazione tramite l'oggetto isoFile.The store can be accessed through the isoFile object.

IsolatedStorageFile^ isoFile =
    IsolatedStorageFile::GetStore(IsolatedStorageScope::User |
        IsolatedStorageScope::Assembly |
        IsolatedStorageScope::Roaming, (Type^)nullptr, (Type^)nullptr);
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)

È possibile aggiungere un ambito di dominio per creare uno spazio di memorizzazione di roaming isolato in base all'utente, al dominio e all'applicazione.A domain scope can be added to create a roaming store isolated by user, domain, and application. Nell'esempio di codice seguente viene illustrata questa possibilità.The following code example demonstrates this.

IsolatedStorageFile^ isoFile =
    IsolatedStorageFile::GetStore(IsolatedStorageScope::User |
        IsolatedStorageScope::Assembly | IsolatedStorageScope::Domain |
        IsolatedStorageScope::Roaming, (Type^)nullptr, (Type^)nullptr);
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)

Vedere ancheSee also