从Silverlight OutOfBrowser应用程序访问特殊文件夹

时间:2011-10-16 15:37:04

标签: silverlight silverlight-4.0

在我的Silverlight 4.0应用程序中(提升信任级别),我正在尝试使用以下代码访问公共模板文件夹:

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

但是,这样的代码throwsSystem.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枚举有更多的值,它们有什么用?有没有办法验证此枚举/方法查找的文件夹,或任何其他方式来访问它?

1 个答案:

答案 0 :(得分:4)

在Silverlight 4中,“我的文档”区域和隔离存储是OOB应用程序我任意读/写的唯一两个地方。这将随Silverlight 5而改变,其中提升的信任应用程序将具有更大的磁盘访问权限。

至于它为何存在,请参阅MSDN Documentation中的注释:

  

此类型用于支持Silverlight for Windows Phone中的.NET Compact Framework基础结构,并且不适用于您的应用程序代码。

值得注意的是,如果您的目标是Windows OOB,则可以使用COM自动化和Silverlight 4中的Scripting.FileSystemObject在磁盘上任意读/写文件:

using (dynamic fso = AutomationFactory.CreateObject("Scripting.FileSystemObject"))
{
    dynamic file = fso.CreateTextFile(@"C:\tmp.txt");
    file.WriteLine(@"I just wrote to c:\ !!");
    file.Close();
}