Изолированное хранилище
89C# и .NET --- Многопоточность и файлы --- Изолированное хранилище
Помимо возможности чтения и записи данных в реестр существует также возможность читать и записывать значения в так называемое изолированное хранилище. Изолированное хранилище должно использоваться при наличии проблем с записью данных в реестр или на диск в целом. Его довольно легко применять для хранения как информации о состоянии приложений, так и пользовательских настроек.
Изолированное хранилище можно считать, по сути, виртуальным диском, где хранятся элементы, к которым должен быть разрешен общий доступ как только приложению, которым они были созданы, так и другим экземплярам этого же приложения. Доступ к изолированному хранилищу может осуществляться двумя способами. Первый подразумевает получение доступа пользователем и сборкой.
При получении доступа к изолированному хранилищу пользователем и сборкой на компьютере присутствует единственное место размещения хранилища, доступное через множество экземпляров приложения. Доступ обеспечивается путем предоставления идентификационных данных пользователя и приложения (или сборки). Этот процесс показан на рисунке в виде диаграммы:

Это означает возможность иметь множество экземпляров одного и того же приложения, которые работают из одного и того же хранилища. Второй способ подразумевает получение доступа к изолированному хранилищу пользователем, сборкой и доменом. В таком случае каждый экземпляр приложения работает из собственного изолированного хранилища, что демонстрирует диаграмма на рисунке ниже:

Как уже было сказано, в таком случае каждый экземпляр приложения работает из собственного хранилища, и параметры записей каждого из этих экземпляров имеют отношение только к самим себе. Это более детализированный подход.
Чтобы увидеть на примере работу с изолированным хранилищем в приложении Windows Forms (точно также его можно использовать и в приложении ASP.NET), реализуем методы ReadSettings() и SaveSettings(), предназначенные для чтения и записи значений в изолированное хранилище:
using System.IO;
using System.I0.IsolatedStorage;
using System.Text;
...
void SaveSettings()
{
IsolatedStorageFile storFile = IsolatedStorageFile.GetUserStoreForDomain();
IsolatedStorageFileStream storStream = new
IsolatedStorageFileStream("SelfPlacingWindow.xml",
FileMode.Create, FileAccess.Write);
System.Xml.XmlTextWriter writer = new
System.Xml.XmlTextWriter(storStream, Encoding.UTF8);
writer.Formatting = System.Xml.Formatting.Indented;
...