在我的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枚举有更多的值,它们有什么用?有没有办法验证此枚举/方法查找的文件夹,或任何其他方式来访问它?
答案 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();
}