我收到了拒绝访问权限的异常。我该如何解决这个问题?
以下是例外:
System.UnauthorizedAccessException未处理HResult = -2147024891 消息=拒绝访问路径'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");
}
答案 0 :(得分:8)
双击app.manifest
文件,如果app.manifest
不存在,请右键点击您的项目,添加 - >新商品 - > Application Manifest File然后替换此行
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
用这个
<requestedExecutionLevel level="requireAdministrator" uiAccess="true" />
它将以管理员权限运行您的应用程序。
答案 1 :(得分:4)
如果要访问根目录,可能需要以管理员模式运行项目
您可以将此添加到应用清单
<requestedExecutionLevel level="requireAdministrator" uiAccess="true"/>
答案 2 :(得分:1)
我不确定所有人可能会抛出UnauthorizedAccessException
。
虽然有一个想法......您正试图直接在c:
驱动器中创建文件,有时系统策略不允许这样做。为了排除故障,请尝试在您有权访问的其他位置创建文件,例如My Documents
。
答案 3 :(得分:0)
在访问文件之前,您需要将FileAtrributes
的{{1}}属性设置为File
。
试试这个:
Normal
答案 4 :(得分:0)
只是要添加Mujahed的答案(我还不能发表评论),如果您只是想以管理员权限运行,则不需要uiAccess="true"
。将此选项设置为true可能会让您感到头疼(例如,您可能无法在调试模式下运行项目。)
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />