在C#进行文件、目录操作时,如果目标路径的总长度超过260个字符,系统会抛出路径太长异常,导致操作失败。Windows系统默认限制了传统Win32 API的路径长度,要解决这个问题,需要启用Win32长路径支持,同时配合对应的C#代码实现。

路径太长异常的触发原因
Windows系统早期设计的MAX_PATH常量值为260,传统Win32 API在处理路径时会遵循这个限制,当路径长度超过该值时,就会返回错误。在C#中使用System.IO命名空间下的常规文件操作类时,底层调用的就是这些传统API,因此会触发路径太长异常。常见的触发场景包括:
- 操作嵌套层级非常深的目录下的文件
- 文件名本身包含大量字符,加上目录路径后总长度超标
- 拼接路径时未做长度校验,导致最终路径超出限制
启用Win32长路径支持的前提条件
要启用Win32长路径支持,需要满足以下两个条件:
- 操作系统版本为Windows 10 1607及以上,或者Windows Server 2016及以上
- 应用程序的目标框架为.NET Framework 4.6.2及以上,或者.NET Core 2.0及以上,因为这些版本开始支持长路径操作
系统层面启用长路径支持
首先需要在系统中开启长路径支持策略,步骤如下:
- 按下Win+R组合键,输入gpedit.msc打开本地组策略编辑器
- 依次展开计算机配置、管理模板、系统、文件系统
- 找到启用Win32长路径选项,双击打开配置窗口,选择已启用,点击确定保存
如果是没有组策略编辑器的系统版本,也可以通过修改注册表实现:
- 按下Win+R组合键,输入regedit打开注册表编辑器
- 定位到HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlFileSystem路径
- 找到LongPathsEnabled键值,将其数值数据修改为1,如果没有该键值则新建一个DWORD(32位)值,命名为LongPathsEnabled,数值设为1
- 重启系统使配置生效
应用程序清单配置
除了系统层面的配置,还需要在C#应用程序的清单文件中添加长路径支持声明,步骤如下:
- 在Visual Studio中右键点击项目,选择添加、新建项
- 选择应用程序清单文件,命名为app.manifest,点击添加
- 在清单文件中找到
application节点,添加以下配置:
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
</windowsSettings>
</application>
C#代码实现长路径文件操作
完成上述配置后,就可以在C#代码中使用长路径进行文件操作了,以下是常见的操作示例:
创建超长路径的目录
using System;
using System.IO;
class Program
{
static void Main()
{
// 构造超长路径,总长度超过260字符
string longPath = @"C:testlevel1level2level3level4level5level6level7level8level9level10level11level12level13level14level15level16level17level18level19level20testdir";
try
{
// 创建目录,启用长路径支持后不会抛出异常
Directory.CreateDirectory(longPath);
Console.WriteLine("目录创建成功,路径长度:" + longPath.Length);
}
catch (Exception ex)
{
Console.WriteLine("操作失败:" + ex.Message);
}
}
}
读写超长路径的文件
using System;
using System.IO;
using System.Text;
class Program
{
static void Main()
{
// 超长路径的文件路径
string longFilePath = @"C:testlevel1level2level3level4level5level6level7level8level9level10level11level12level13level14level15level16level17level18level19level20testdirtestfile.txt";
try
{
// 写入文件内容
string content = "这是测试长路径文件操作的内容";
File.WriteAllText(longFilePath, content, Encoding.UTF8);
Console.WriteLine("文件写入成功");
// 读取文件内容
string readContent = File.ReadAllText(longFilePath, Encoding.UTF8);
Console.WriteLine("读取到的内容:" + readContent);
}
catch (Exception ex)
{
Console.WriteLine("操作失败:" + ex.Message);
}
}
}
注意事项
- 如果是在旧版本Windows系统上运行程序,即使做了上述配置也无法支持长路径,需要升级系统
- 部分第三方文件操作库可能还未适配长路径,建议优先使用.NET自带的
System.IO命名空间下的类 - 如果程序需要兼容不支持长路径的环境,可以在操作路径前先校验长度,超过限制时给出友好提示
- 启用长路径支持后,路径长度理论上可以支持到32767个字符,满足绝大多数场景的需求
C#Win32_long_path文件操作路径太长异常修改时间:2026-06-19 15:18:26