Может ли Silverlight изменить файл на компьютере локального пользователя?


Я рассматриваю возможность написания приложения на C# / .NET, которое будет программно изменять XML-файл на компьютере пользователя, и я пытаюсь определить, будет ли Silverlight (и какие версии, в каких режимах) работать для этой задачи.

Вот рабочий процесс:

  • пользователь выбирает файл
  • приложение изменяет файл
  • приложение сохраняет файл, перезаписывая исходный файл

Возможно ли это в Silverlight? Если да, то в каких версиях и при каких условиях?

6 5

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 имеет доступ.

Кроме того, приложение Silverlight имеет доступ к своему собственному изолированному хранилищу.

Sl 4 имеет некоторые возможности

Http://www.silverlight.net/learn/videos/silverlight-4-beta-videos/local-file-access/

Но не общий доступ к локальной файловой системе