.NET中拒绝文件访问

时间:2009-07-29 10:10:46

标签: c#

我正在用c#编写一个应用程序,它将数据保存到xml。当我重新打开应用程序时,它说

  

拒绝访问路径'C:\ ProgramData \ Test \ abc.xml'。

任何人都可以帮我解决这个问题。

有没有办法找到拒绝访问的原因。

4 个答案:

答案 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知道哪个程序正在锁定该文件,如果是您的应用程序则重构代码,您应该在读取或写入后关闭文件