Может ли Silverlight изменить файл на компьютере локального пользователя?
Я рассматриваю возможность написания приложения на C# / .NET, которое будет программно изменять XML-файл на компьютере пользователя, и я пытаюсь определить, будет ли Silverlight (и какие версии, в каких режимах) работать для этой задачи.
Вот рабочий процесс:
- пользователь выбирает файл
- приложение изменяет файл
- приложение сохраняет файл, перезаписывая исходный файл
Возможно ли это в Silverlight? Если да, то в каких версиях и при каких условиях?
6 ответов:
Некоторые ответы здесь сосредоточены на изолированном хранении. Если ни одно другое приложение не нуждается в доступе к этим данным, то, возможно, изолированное хранилище-это ответ для вас. Эта ссылка является блогом, описывающим, как вы изолированное хранилище используется в двух словах.
Я подозреваю, что это, возможно, не то, что вы хотите, так как у вас есть пользователь выбрать файл.
Конечно, в SL3 вы можете попросить пользователя выбрать файл, а затем прочитать его.
Однако, чтобы сохранить его снова, вам придется нужно показать пользователю диалог "сохранить файл", чтобы получить файловый поток, в который вы можете писать.
В SL4 под управлением OOB с повышенными привилегиями вы можете сохранять подобные файлы непосредственно в папке users, например My Documents.
Edit
Просто чтобы быть абсолютно ясным, вы не можете записать в файл, который был получен с помощью
OpenFileDialog
Только чтение, вы не можете прочитать в файл, который был получен с помощьюSaveFileDialog
только запись.
Среда выполнения silverlight работает внутри "песочницы" безопасности.
Доступ к файлам с жесткого диска компьютера возможен только через диалоговое окно Открыть файл. Вы можете читать и писать из изолированного хранилища с помощью Silverlight 2 и выше.
В Silverlight 4 у вас будет возможность доступа к файлам из "специальных каталогов", таких как Мои Документы, моя музыка, мои фотографии и т. д. (http://weblogs.asp.net/nmarun/archive/2009/11/27/local-file-access-silverlight-4.aspx )
SL3 обеспечивает доступ к изолированной области хранения, SL4 открывает доступ еще дальше для доверенных приложений, позволяя им получать доступ к файлам в Mydoc, MyPictures и т. д.
Приложения Silverlight не могут изменять произвольные файлы на компьютере пользователя. Однако они могут хранить файлы локально, используя изолированное хранилище:
В .NET Framework изолированное хранилище-это механизм хранения, который позволяет частично доверенным приложениям сохранять данные на локальном компьютере без нарушения каких-либо политик безопасности, установленных на компьютере. Изолированное хранилище существует с первой версии платформы .NET Framework и особенно полезно для загруженные, частично доверенные компоненты, которым обычно не предоставляется доступ к стандартным механизмам ввода-вывода. Однако этим же приложениям обычно предоставляется право использовать изолированное хранилище. Таким образом, приложения, поступающие из потенциально ненадежных источников, все еще могут выполнять некоторый дисковый ввод-вывод, хотя и контролируемым образом.
Подробнее об этом можно прочитать в следующей статье:
Встроенный в ОС диалог открытия/сохранения файлов позволяет Silverlight получать доступ/изменять любой файл, указанный пользователем, возвращая файловый поток, к которому приложение Silverlight имеет доступ.
Кроме того, приложение Silverlight имеет доступ к своему собственному изолированному хранилищу.
Sl 4 имеет некоторые возможности
Http://www.silverlight.net/learn/videos/silverlight-4-beta-videos/local-file-access/
Но не общий доступ к локальной файловой системе