[英]An unhandled exception of type 'System.UnauthorizedAccessException' occurred in mscorlib.dll
[英]System.UnauthorizedAccessException was unhandled
我收到了拒绝访问权限的异常。 我怎样才能解决这个问题?
这是一个例外:
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
不存在右键单击您的项目,添加 - >新建项目 - >应用程序清单文件然后替换此行
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
有了这个
<requestedExecutionLevel level="requireAdministrator" uiAccess="true" />
它将以管理员权限运行您的应用程序。
如果要访问根目录,则可能需要以管理员模式运行项目
您可以通过将其添加到应用清单来完成此操作
<requestedExecutionLevel level="requireAdministrator" uiAccess="true"/>
我不确定所有人可能会抛出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可能会让您感到头痛(例如,您可能无法在调试模式下运行项目。)
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.