文件写入时出现UnauthorizedAccessException异常

7

对远程路径进行File.WriteAllText操作会抛出UnauthorizedAccessException异常。但是,我可以在记事本中打开该文件并毫无问题地编辑它。尝试修改该文件的进程正在以我的用户帐户身份运行,因此应该能够访问它。


请发布您的代码以帮助进行故障排除。 - Mike Ohlsen
没有什么需要发布的,只是在文件上调用了File.WriteAllText(而不是目录)。它可能被另一个进程打开,但由于我已经成功地从记事本中修改了它,所以它不应该被锁定。 - ripper234
3个回答

14

UnauthorizedAccessException 也会在文件设置了“hidden”属性时被抛出。不要问我为什么...


非常感谢!我花了一整天的时间来研究为什么在第一次调用此代码后,每次调用都会失败并显示未经授权的错误:File.WriteAllText(tempFilePath, exportCommand);File.SetAttributes(tempFilePath, FileAttributes.Hidden); - Ryan Buddicom
@Hellfire 如果这有帮助的话,点个赞可以让未来的访问者更快地找到答案,同时也会让我感激不尽 ;) - Roman Starkov
抱歉,我以为我已经做了,祝你愉快! :) - Ryan Buddicom
哇,那真是晦涩难懂。这就是我的问题所在...谢谢! - NielW

13
根据MSDNUnauthorizedAccessException也可能由以下原因导致:

path specified a file that is read-only.

-or- 

This operation is not supported on the current platform.

-or- 

path specified a directory.
这些条件中有可能是导致你问题的原因之一吗?

谢谢,这个救了我。 :) - Captain Delano

1

我相信你也会遇到这个异常(虽然它没有被记录),如果文件被另一个进程或线程锁定。

确保没有其他东西以禁止写入的方式打开文件。记事本不是检测文件是否被锁定的好工具,因为它可以打开被锁定的文件(即只读文件是可以的)。


在记事本中,我可以实际编辑文件。为什么我不能从 .Net 修改它? - ripper234
1
尝试保存文件。Notepad一般会打开文件,除非它被独占性读取锁定(这种情况很少见)-但通常您无法直接覆盖保存它-您将需要使用“另存为”... - Reed Copsey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接