System.UnauthorizedAccessException未处理

我收到了拒绝访问权限的exception。 我怎样才能解决这个问题?

这是例外:

System.UnauthorizedAccessException未处理HResult = -2147024891 Message =拒绝访问路径’c:\ message.txt’。
来源= mscorlib程序

这是代码:

public static void WriteToFile(string s) { fs = new FileStream("c:\\message.txt", FileMode.Append, FileAccess.Write); sw = new StreamWriter(fs); sw.WriteLine(s); sw.Flush(); sw.Close(); fs.Close(); } 

编辑:如果我以管理员身份运行vs2012,它是否有效,但有没有办法或理由像普通用户那样做?

这有效:

  public static void WriteToFile(string s) { fs = new FileStream(@"C:\Users\KristjanBEstur\Documents\message.txt", FileMode.Append, FileAccess.Write); sw = new StreamWriter(fs); sw.WriteLine(s); sw.Flush(); sw.Close(); fs.Close(); File.Delete(@"C:\Users\KristjanBEstur\Documents\message.txt"); } 

如果要访问根目录,则可能需要以管理员模式运行项目

您可以通过将此添加到应用清单来完成此操作

  

双击app.manifest文件,如果app.manifest不存在右键单击您的项目,添加 – >新建项目 – >应用程序清单文件然后替换此行

  

有了这个

  

它将以管理员权限运行您的应用程序。

我不确定所有人可能会抛出UnauthorizedAccessException

但是有一个想法……你试图直接在c:驱动器中创建一个文件,有时系统策略不允许这样做。 为了排除故障,请尝试在您可以访问的其他位置创建文件,例如“ My Documents

您需要在访问文件之前将FileFileAtrributes属性设置为Normal

试试这个:

 public static void WriteToFile(string s) { String path=@"c:\message.txt"; if(File.Exists(path)) { File.SetAttributes(path, FileAttributes.Normal); fs = new FileStream(path, FileMode.Append, FileAccess.Write); sw = new StreamWriter(fs); sw.WriteLine(s); sw.Flush(); sw.Close(); fs.Close(); } else { MessageBox.Show("File not Found!"); } } 

只是为了添加Mujahed的答案(我还不能发表评论),如果您只想以管理员权限运行,则不需要uiAccess="true" 。 将此选项设置为true可能会让您感到头疼(例如,您可能无法在调试模式下运行项目。)