Доступ к специальным папкам из приложения Silverlight OutOfBrowser - PullRequest
3 голосов
/ 16 октября 2011

Внутри моего приложения Silverlight 4.0 (с повышенным уровнем доверия) я пытаюсь получить доступ к папке общих шаблонов, используя следующий код:

var folder = Environment.GetFolderPath(Environment.SpecialFolder.Templates);

Однако такой код выдает исключение System.Security.SecurityException:

System.Security.SecurityException was unhandled by user code
  Message=File operation not permitted. Access to path '' is denied.
  StackTrace:
       at System.IO.FileSecurityState.EnsureState()
       at System.Environment.InternalGetFolderPath(SpecialFolder folder, SpecialFolderOption option, Boolean checkHost)
       at System.Environment.GetFolderPath(SpecialFolder folder)

Кажется, что доступ к любой папке, кроме «Мои документы», для текущего пользователя вызовет такого рода исключения - поскольку перечисление SpecialFolder имеет больше значений, для чего они нужны?Есть ли способ проверить, какую папку ищет этот enum / method, или каким-либо другим способом получить к ней доступ?

1 Ответ

4 голосов
/ 16 октября 2011

В Silverlight 4 область «Мои документы» и изолированное хранилище - единственные два места, где приложения OOB произвольно читают / записывают из / в.Это изменится в Silverlight 5, где приложения с повышенным доверием получат больший доступ к диску.

Что касается его вообще, см. Примечание в Документация MSDN :

Этот тип присутствует для поддержки инфраструктуры .NET Compact Framework в Silverlight для Windows Phone и не предназначен для использования в коде приложения.

Стоит отметить, что есливы нацелены на Windows OOB, можно произвольно читать / записывать файлы на диск с помощью автоматизации COM и Scripting.FileSystemObject в Silverlight 4:

using (dynamic fso = AutomationFactory.CreateObject("Scripting.FileSystemObject"))
{
    dynamic file = fso.CreateTextFile(@"C:\tmp.txt");
    file.WriteLine(@"I just wrote to c:\ !!");
    file.Close();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...