【问题标题】:File.WriteAllText throws UnauthorizedAccessExceptionFile.WriteAllText 抛出 UnauthorizedAccessException
【发布时间】:2009-10-06 15:35:02
【问题描述】:

对远程路径执行File.WriteAllText 会引发UnauthorizedAccessException。当我在记事本中打开文件时,我可以毫无问题地对其进行编辑。尝试修改文件的进程正在以我自己的用户帐户运行,因此它应该能够访问它。

【问题讨论】:

  • 发布您的代码以帮助解决问题
  • 没什么可发布的,它只是在文件(不是目录)上调用 File.WriteAllText。它可能被另一个进程打开,但它不应该被锁定,因为我正在从记事本成功修改它。

标签: .net windows file-access


【解决方案1】:

根据MSDNUnauthorizedAccessException也可能是由于:

path specified a file that is read-only.

-or- 

This operation is not supported on the current platform.

-or- 

path specified a directory.

这些条件之一是否可能是您的问题的原因?

【讨论】:

  • 谢谢,这救了我。 :)
【解决方案2】:

如果文件设置了“隐藏”属性,也会抛出UnauthorizedAccessException。不要问我为什么……

【讨论】:

  • 非常感谢!我花了一整天的时间来思考为什么在第一次调用此代码之后的每个调用都因 unauth 失败: File.WriteAllText(tempFilePath, exportCommand); File.SetAttributes(tempFilePath, FileAttributes.Hidden);
  • @Hellfire 如果这有帮助,点赞将帮助未来的访问者更快地找到答案,我也将不胜感激;)
  • 哎呀,我以为我有,享受! :)
  • 哇,这太晦涩了。这就是我的问题...谢谢!
【解决方案3】:

如果文件被另一个进程或线程锁定,我相信您也会收到此异常(尽管没有记录)。

确保没有其他人以禁止写入的方式打开文件。记事本不是查看文件是否被锁定的好测试,因为它会打开一个锁定的文件(即:只读文件很好)。

【讨论】:

  • 在记事本中我实际上可以编辑文件。为什么我不能从 .Net 修改它?
  • 尝试保存文件。记事本总是会打开一个文件,除非它被锁定以供独占读取(这种情况非常罕见)——但通常你无法将它保存在顶部——你必须使用另存为...
猜你喜欢
  • 2016-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-09
  • 1970-01-01
相关资源
最近更新 更多