我正在用c#编写一个应用程序,它将数据保存到xml。当我重新打开应用程序时,它说
拒绝访问路径'C:\ ProgramData \ Test \ abc.xml'。
任何人都可以帮我解决这个问题。
有没有办法找到拒绝访问的原因。
答案 0 :(得分:4)
您可能会收到此错误,因为您运行的是Vista或Win7并且已启用UAC。
C:\ ProgramData需要管理员priveledges写入(但不读取)。
我刚刚发现这很难,因为我一直在开发一个在XP上工作正常的程序,它使用System.Environment.SpecialFolder.CommonApplicationData,它在Vista中指的是上面的位置,需要提升的privs才能写入那个目录。
答案 1 :(得分:2)
如果您展示正在使用的代码,确定确切原因会很有帮助。没有它,我的猜测是你的应用程序将句柄留给Filestream
打开。
您应该始终使用dispose模式处理非托管引用(或使用using
construct)。
答案 2 :(得分:2)
这是我过去在XML编写器中发现的一个常见问题。如果正在使用的文件流未正确关闭,则文件将保持锁定状态。我说这是一个问题,主要是因为我注意到由于某种原因,即使应用程序关闭后锁仍然存在,但我只是看到它发生在我以这种方式使用XML编写器时(不知道)为什么呢。
基本上,只需使用“using”关键字即可确保正确关闭您的编写器。代码看起来像这样:
using(XmlWriter _myXmlWriter = XmlWriter.Create(outputStream, xmlWriterSettings))
{
//Build XML here
}
答案 3 :(得分:1)
使用Unlocker知道哪个程序正在锁定该文件,如果是您的应用程序则重构代码,您应该在读取或写入后关闭文件