所以我有一个本地WPF Web浏览器应用程序,我需要它写入文本文件。但是我总是得到System.Reflection.TargetInvocationException类型的异常。我没有得到任何更多的信息,但我很确定这是因为它是从网络浏览器(安全等)运行。
我正在使用的代码在常规的Windows窗体应用程序等中工作。通常是这样的:
StreamWriter sw;
sw = File.CreateText("c:\\myTextFile.txt");
sw.WriteLine("First line");
sw.Close();
那么,有没有解决方法呢?
非常感谢, 托马斯
答案 0 :(得分:1)
您可以尝试在Full Trust mode中运行。
答案 1 :(得分:1)
浏览器中的WPF将默认为部分信任。您可以在“项目属性”的“安全”选项卡中更改它(当然,主题是由受信任的用户安装)。
答案 2 :(得分:0)
问题不是WPF安全问题。问题是正在运行的操作系统安全功能:如果没有admin privs,则无法写入C:驱动器的根目录。您的应用程序不仅需要处于WPF完全信任模式,而且还需要在Vista和Windows 7及更高版本上授予您的应用程序管理权限。
所有这一切,您应该能够写入非受保护路径中的文件。例如,您可以写入Path.GetTempFilePath()返回的临时文件。但是,您的WPF浏览器应用程序可能仍然必须完全信任才能写入磁盘。
答案 3 :(得分:0)
请参阅this page,描述部分信任安全注意事项。如果您需要存储文件以供自己的应用程序使用,请考虑使用Isolated Storage。如果要允许用户将文件保存到磁盘,可以使用SaveFileDialog.OpenFile允许用户选择路径并确认保存文件。