【问题标题】:Access Denied when saving a file, Windows 8 App保存文件时拒绝访问,Windows 8 应用程序
【发布时间】:2014-01-20 13:04:09
【问题描述】:

我正在使用此代码将节点添加到 XmlDocument,然后将其保存到现有文件中,但是我不断收到此错误消息:

访问被拒绝。 (来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))

我使用的代码是这样的:

            string xml = string.Empty;

        StorageFolder storageFldr = Package.Current.InstalledLocation;
        storageFldr = await storageFldr.GetFolderAsync("Scores");

        StorageFile sf = await storageFldr.GetFileAsync("Scores.xml");
        xml = await FileIO.ReadTextAsync(sf, Windows.Storage.Streams.UnicodeEncoding.Utf8);

        XmlDocument xDoc = new XmlDocument();
        xDoc.LoadXml(xml);

        IXmlNode xNode = xDoc.CreateElement("score");
        xNode.InnerText = "Hello this is a test";

        xDoc.DocumentElement.AppendChild(xNode);

        await xDoc.SaveToFileAsync(sf);

我将不胜感激。

提前谢谢大家。

【问题讨论】:

标签: c# silverlight xaml windows-8 windows-8.1


【解决方案1】:

我遇到了同样的问题,但这对我有用:

Windows.Storage.StorageFolder sf = await ApplicationData.Current.LocalFolder.CreateFolderAsync("EMP", CreationCollisionOption.OpenIfExists); 
StorageFile st = await sf.CreateFileAsync("Employee.xml", CreationCollisionOption.OpenIfExists); 
await dom.SaveToFileAsync(st);

【讨论】:

  • Thnx,我发现 APP 无权访问安装文件夹,因此我们必须使用 Win8 应用程序的“%APPDIR%”等效项。谢谢
【解决方案2】:

如果您的应用程序没有提升权限(受信任的应用程序 - 带有证书或 OOB 应用程序),我认为这是不可能的。

您可以按照本指南将您的应用设置为浏览器外应用。

How to: Configure an Application for Out-of-Browser Support

但是,这可能通过使用隔离存储来保存 - 然后修改 XML。

看这个例子XML File with IsolatedStorage

【讨论】:

  • 其实这是一个Windows 8 APP,而不是网页浏览器silverlight 应用
  • 我的错!您确定 InstalledLocation 不是只读的吗?我记得曾经读过一些关于那个的东西..
  • 我找到了解决方案,我必须使用 ApplicationData.Current.LocalFolder 因为这是我的应用程序唯一可以完全访问的地方。
猜你喜欢
  • 2013-07-08
  • 1970-01-01
  • 1970-01-01
  • 2013-05-26
  • 1970-01-01
  • 1970-01-01
  • 2011-12-30
  • 1970-01-01
  • 2016-02-18
相关资源
最近更新 更多