Это - обсуждение между мной и мной для понимания Изолированной Проблемы хранения. Можно ли помочь мне убедить меня об Изолированном устройстве хранения данных?
Это - код, написанный для приложения Windows Forms (читатель), которые читают изолированное устройство хранения данных другого приложения Windows Forms (устройство записи), которое подписывается. Где безопасность то, если читатель может считать файл писателя? Я думал, что только подписанный код может получить доступ к файлу!
Если все приложения.NET рождаются равные и имеют все полномочия получить доступ к Изолированному устройству хранения данных, где безопасность затем? Если я могу установить и выполнить EXE-файл от Изолированного устройства хранения данных, почему я не устанавливаю вирус и выполняю его, я доверен для доступа к этой области. Но вирус или независимо от того, что не будет доверен для доступа к остальной части файловой системы, это только может получить доступ к памяти, и это достаточно опасно.
Я не вижу различия между использованием папки данных приложения для сохранения состояния и использования Изолированного устройства хранения данных кроме длинного противного пути!!
Я хочу попробовать, дают, низко доверяют коду читателя и перетесту, но они сказали, что "Изолированное устройство хранения данных на самом деле создается для предоставления низкого доверяемого приложения права сохранить его состояние".
Код читателя:
private void button1_Click(object sender, EventArgs e)
{
String path = @"C:\Documents and Settings\All Users\Application Data\IsolatedStorage\efv5cmbz.ewt\2ehuny0c.qvv\StrongName.5v3airc2lkv0onfrhsm2h3uiio35oarw\AssemFiles\toto12\ABC.txt";
StreamReader reader = new StreamReader(path);
var test = reader.ReadLine();
reader.Close();
}
Устройство записи:
private void button1_Click(object sender, EventArgs e)
{
IsolatedStorageFile isolatedFile = IsolatedStorageFile.GetMachineStoreForAssembly();
isolatedFile.CreateDirectory("toto12");
IsolatedStorageFileStream isolatedStorage = new IsolatedStorageFileStream(@"toto12\ABC.txt", System.IO.FileMode.Create, isolatedFile);
StreamWriter writer = new StreamWriter(isolatedStorage);
writer.WriteLine("Ana 2akol we ashrab kai a3eesh wa akbora");
writer.Close();
writer.Dispose();
}
Конечно, вы можете получить доступ к любому (известному) месту на жестком диске с помощью вашего кода считывания, предполагая, что у вас есть соответствующие разрешения на доступ к этому месту.
Для области IsolatedStorage не существует специальных разрешений, но есть правила, применяемые к приложениям с низким уровнем доверия, которые используют IsolatedStorage так, как это было задумано. Ничто не мешает вам зашифровать то, что вы там храните, если вы хотите сохранить это в тайне.
Edit: посмотрите CLR Inside Out - Isolated Storage In Silverlight 2 и Silverlight out-of-browser apps: Local Data Store.
Я согласен насчет вашего "непонимания" в заголовке; я думаю, вы неправильно понимаете назначение изолированного хранилища.
Как я понимаю, "изолированное" не означает "частное хранилище, к которому другие программы не могут получить доступ". Это означает "песочницу", чтобы дать вашей программе с низким уровнем доверия место, где она может сохранять данные, когда у нее может не быть разрешения на запись в другое место.