跳到主要内容
AnyStorage
免费下载

Windows 疑难排查

修复 Windows WebDAV 50MB 文件大小限制(0x800700DF)

Windows 默认把 WebDAV 传输限制在 50,000,000 字节,约 50MB。本文给出要改的注册表值、背后那道 4GB 天花板,以及更大的文件该怎么办。

讲清楚 Windows 为什么在 50MB 处报 0x800700DF、FileSizeLimitInBytes 怎么改,以及真正的上限在哪。

WebDAV 50MB 限制,0x800700DF,FileSizeLimitInBytes 修改

拦下这次复制的是本机,不是服务器

在文件资源管理器里映射好 WebDAV 网络驱动器,把一个 180MB 的视频拖进去,进度条还没走就断了,弹出 0x800700DF,大意是文件大小超过了允许的限制,无法保存。

服务端什么都没拒绝。这次复制是 Windows 在数据发出去之前自己掐掉的。

Windows 上所有映射的 WebDAV 驱动器都由 WebClient 服务接管,而这个服务在注册表里带着一个 FileSizeLimitInBytes 值。全新安装的默认值是 50,000,000 字节——十进制的五千万,换算成二进制单位大约是 47.7 MiB。传 Word、PDF 一辈子碰不到它,传视频、数据库备份、PSD、系统镜像几乎必然撞上。

顺带纠正一个流传很广的说法:不少帖子把它写成"WebDAV 50GB 限制"。不是 50GB,是 50MB。少写的那三个零,被人抄了十几年。

改注册表抬高上限

需要管理员权限,改完对这台机器上的所有 WebDAV 映射一起生效。

打开 regedit,定位到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters,找到 FileSizeLimitInBytes;如果不存在,就新建一个同名的 DWORD (32 位) 值。双击它,基数选十进制,填入想要的字节数。常见的两种填法:直接填 4294967295 顶满,或者填 2000000000 这类自己心里有数的数字。

改完一定要重启服务,因为 WebClient 只在启动时读这个值。以管理员身份打开命令提示符,先 net stop WebClient,再 net start WebClient,比在 services.msc 里翻要快。然后断开网络驱动器重新连接,再试一次复制。

4GB 这道墙抬不动

4294967295 就是 0xFFFFFFFF。这个上限在 Windows 里是按 32 位存的,所以系统自带的 WebDAV 客户端最多走到差不多 4GB,没有任何注册表项能突破。

还有一种情况经常被误认成体积限制:文件传到一半才失败,而不是一开始就失败。那通常是超时,不是 FileSizeLimitInBytes。WebClient 的超时值同样放在这个 Parameters 键下,链路慢、单个大文件要传好几分钟的时候,值得一并调大。

WebDAV 50MB 限制在客户端,不在服务端

这一点比改注册表更重要,也是多数文章不会说的:FileSizeLimitInBytes 属于 WebClient,服务端压根不知道有这么个值存在。换个客户端,这道限制就不存在了。

AnyStorage 的做法是在本机跑一个 WebDAV 服务。侧边栏点"服务",切到 WebDAV 标签页,按启动,就得到 http://127.0.0.1:3211。HTTP Basic 认证一直开着,默认用户名 anystorage,首次使用时自动生成 24 位随机密码,两者都可以改,旁边都有复制按钮。当前在 App 里处于连接状态的每个存储,都会以连接名变成这个地址根目录下的一个文件夹——阿里云盘、阿里云 OSS、腾讯云 COS、S3、Cloudflare R2,甚至群晖上的 SFTP,一共 20 种连接类型都能这样暴露出来。

这个服务读取走 HTTP Range 流式返回,写入也是流式的,不会把整个文件先塞进内存,本身没有任何体积上限。用任意第三方 WebDAV 客户端连同一个地址,3GB 的文件照样传得动,注册表一个字都不用碰。超过 4GB,或者要批量搬运,那就别走挂载了,直接在 AnyStorage 里传——它直连存储后端,跟 WebClient 没有半点关系。

有几件事我们更愿意提前讲清楚:

  • 免费版的 WebDAV 服务是只读的,你实际上是在从挂载点往外读文件。0x800700DF 对读取方向同样成立。读写属于 Pro 功能。
  • 同一个 WebClient 默认还拒绝 HTTP Basic 认证。要映射 http:// 地址,通常得把同一个 Parameters 键下的 BasicAuthLevel 改成 2,然后再重启一次服务。
  • 当前版本没有 TLS,地址是明文 http。这正是我们默认只监听 127.0.0.1 的原因,开启局域网访问时 App 会明确弹出警告。
  • App 重启之后,一个连接要先在 App 里打开过一次,才会出现在 WebDAV 根目录下。连接是懒加载的。

三种情况怎么选

  • 文件在 50MB 以内:默认值够用,什么都不用改。
  • 文件在 4GB 以内,且能动注册表:设好 FileSizeLimitInBytes,重启 WebClient。
  • 文件超过 4GB,或者是公司管控的电脑改不了注册表:用第三方 WebDAV 客户端连同一个本地地址,或者干脆在 App 里传。

到 2026 年,WebClient 仍然是微软标记为弃用的组件,一堆十年前的默认值原封不动留着。所以在 Windows 上 WebDAV 传输出问题、同一个地址在 Mac 上却一切正常时,先怀疑客户端。