System.UnauthorizedAccessException未处理

时间:2013-12-07 16:41:25

标签: c# file access-denied unhandled-exception file-access

我收到了拒绝访问权限的异常。我该如何解决这个问题?

以下是例外:

  

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");
    }

5 个答案:

答案 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" />