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
。
您需要在访问文件之前将File
的FileAtrributes
属性设置为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可能会让您感到头疼(例如,您可能无法在调试模式下运行项目。)