You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#.Net文件创建报错求助:System.UnauthorizedAccessException异常

解决C# File.Create访问C盘根目录时的UnauthorizedAccessException问题

嘿,这个权限问题我太熟了——你碰到的System.UnauthorizedAccessException是Windows的安全机制在拦着你呢!C盘根目录属于系统级保护路径,默认情况下普通用户账户(哪怕你用Visual Studio运行程序)都没有直接创建、修改文件的权限,这是为了防止误操作破坏系统文件。

给你几个靠谱的解决办法,按优先级推荐:

1. 优先使用非系统敏感路径(最稳妥)

别硬编码C盘根目录,换成用户专属的路径,比如我的文档目录,这个路径默认是有读写权限的,而且还能适配不同Windows版本的路径差异。

修改后的代码示例:

using System;
using System.IO;

class Program
{
    static void Main()
    {
        // 拼接用户文档目录和文件名,避免权限问题
        string path = Path.Combine(
            Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), 
            "aaa.txt"
        );
        
        if (File.Exists(path))
        {
            Console.WriteLine("file exist");
        }
        else
        {
            using (FileStream fs = File.Create(path))
            {
                // 示例:写入内容到文件
                byte[] content = new System.Text.UTF8Encoding(true).GetBytes("Hello from safe path!");
                fs.Write(content, 0, content.Length);
                Console.WriteLine("File created successfully!");
            }
        }
    }
}

2. 提升程序权限(仅当必须操作C盘根目录时用)

如果你一定要在C盘根目录创建文件,有两种方式获取足够权限:

  • 临时提升权限:右键点击Visual Studio,选择「以管理员身份运行」,然后再编译运行你的代码,此时程序会获得管理员权限,就能操作C盘根目录了。
  • 永久设置权限(适合发布后的程序):给项目添加UAC清单文件,让程序每次运行都自动请求管理员权限:
    1. 在Visual Studio的项目中,右键选择「添加」→「新建项」,搜索并添加「应用程序清单文件(app.manifest)」。
    2. 打开清单文件,找到<requestedExecutionLevel>节点,把原来的level="asInvoker"改成:
      <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
      
    3. 保存后重新编译程序,下次运行就会弹出UAC授权窗口,授权后就能操作C盘根目录了。

小提醒

尽量避免直接操作系统根目录,除了权限问题,还容易误删或覆盖系统关键文件,推荐始终使用用户专属路径、程序安装目录或者临时目录来存储你的文件。

内容的提问来源于stack exchange,提问作者amir mehr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:59:40