真正变了的东西
不是你的服务端。微软的 Windows 客户端弃用功能清单里有这么一条,宣布时间是 2023 年 11 月:
text
Webclient (WebDAV) Service
The Webclient (WebDAV) service is deprecated.
The Webclient service isn't started by default in Windows.这两句话解释了网上大多数"Windows 11 上 WebDAV 用不了"的帖子。功能还在,也还能用;只是不再继续开发,而且在全新安装的系统上那个服务是停着的,于是第一次映射就失败。更糟的是你拿到的提示——"找不到网络名"、0x80070043、"The folder you entered does not appear to be valid."——完全不提服务没启动这件事。
| 失败表现 | 原因 | 处理 |
|---|---|---|
| 任何映射尝试都立刻失败 | WebClient 服务没启动 | 启动它并设为自动 |
http:// 端点,从不弹密码框 | Basic 认证限定 SSL 站点 | BasicAuthLevel = 2 |
复制到 50 MB 左右报 0x800700DF | FileSizeLimitInBytes 默认值 | 抬高数值,重启服务 |
| 刚修好立刻重试,错误照旧 | 非 WebDAV 服务器缓存 | 等 60 秒 |
| 重启之后映射消失 | Basic 凭据不被保存 | 用登录脚本重新映射 |
1. 启动服务,并设为自动
powershell
Get-Service WebClient | Format-List Name, Status, StartType
Set-Service -Name WebClient -StartupType Automatic
Start-Service -Name WebClient在管理员命令提示符里做的话,每个 = 后面要有空格:微软的 sc.exe config 参考说明,选项和取值之间必须有空格,省掉会让操作失败——而被到处复制的 start=auto 正是省掉空格的写法。
cmd
sc.exe config WebClient start= auto
sc.exe start WebClientWindows Server 上在添加"桌面体验"功能之前重定向器根本没装;Windows 11 上它装了,只是睡着。
2. 允许对 http:// 端点发送 Basic 凭据
Windows 10 和 11 默认不会把 Basic 凭据发给明文端点,而且失败时不弹窗,所以这个原因经常被误诊成密码问题。控制它的是 HKLM\SYSTEM\CurrentControlSet\Services\WebClient\Parameters 下的 DWORD 值 BasicAuthLevel。微软文档写明 0 为禁用,1 为「Basic authentication is enabled for SSL web sites only」,2 为「enabled for SSL and non-SSL web sites」,默认是 1。
cmd
reg add "HKLM\SYSTEM\CurrentControlSet\Services\WebClient\Parameters" /v BasicAuthLevel /t REG_DWORD /d 2 /f
net stop WebClient
net start WebClient重启是必须的:该键的注记明确说改任何值之后都要重启 Web Client 或重启计算机。微软还把非 SSL 连接上的 Basic 认证称为「strongly discouraged」,这话没错——凭据是明文过线的。回环地址上流量不出本机;只要会走网络,就用 HTTPS 并把值保持在 1。
3. 在撞上之前先知道上限
下面每个值都来自微软的 WebDAV 重定向器文档,同一个注册表键,全是实数而非传闻。
| 值 | 控制什么 | 默认 |
|---|---|---|
FileSizeLimitInBytes | 服务允许的最大文件传输大小 | 50,000,000(十进制,50 MB) |
FileAttributesLimitInBytes | 单个集合上所有属性的最大大小 | 1,000,000(十进制,1 MB) |
SendReceiveTimeoutInSec | 发出 GET /file.ext 之类请求后的超时 | 60 |
InternetServerTimeoutInSec | 非本地服务器的连接超时 | 30 |
LocalServerTimeoutInSec | 本地服务器的连接超时 | 15 |
ServerNotFoundCacheLifeTimeInSec | 主机被缓存为非 WebDAV 的时长 | 60 |
SupportLocking | 是否支持 LOCK | 1 |
BasicAuthLevel | Basic 认证:关 / 仅 SSL / 两者 | 1 |
其中两个值得多看一眼。FileSizeLimitInBytes 就是著名的 50 MB 天花板;它是 DWORD,所以最大只能是 4,294,967,295 字节——这就是为什么 Windows 的 WebDAV 映射再怎么配也搬不动一个 5 GB 的文件(细节见Windows WebDAV 50 MB 限制)。而 ServerNotFoundCacheLifeTimeInSec 正是"我修好了但没用"的真相:60 秒内服务直接返回缓存的失败,根本不联系服务端。
4. 排查期间用命令行映射
向导给你一句话,net use 给你一个编号,而编号是可以搜索的。微软的说明用普通 URL 形式,UNC 形式被文档化为 \\server[@SSL][@port][\path],@SSL 表示 HTTPS,@port 在非 80/443 时必填:
cmd
net use Z: https://dav.example.com/files /user:alice *
net use Y: \\dav.example.com@SSL@8443\DavWWWRoot\files /user:alice *末尾的 * 让 Windows 提示输入密码,而不是把它留在命令历史里。如果答案是 System error 67,读net use 错误 67;资源管理器版的写法是0x80070043;向导自己的拒绝另有一页:输入的文件夹似乎无效。
5. 注销就消失的映射
这是文档化的行为,不是 Windows 11 的退步:自 Windows 7 起,Basic 认证的凭据无法由凭据管理器保存,所以 Basic 认证的 WebDAV 映射只能重建而不是恢复。微软自己的排查建议也是用登录脚本重新执行命令。
powershell
if (-not (Test-Path Y:)) {
net use Y: http://127.0.0.1:3211/ /user:anystorage
}"弃用"对你意味着什么
弃用不是移除。微软自己的定义是:该功能不再积极开发,可能在未来更新中被移除。WebClient 这条自 2023 年 11 月起一直挂着,没有给出移除日期。实际含义有三条:没有新功能、没有性能改进、下一个大版本没有保证。
它也意味着长期方案不该只依赖 Windows 重定向器做批量工作。直接说存储 API 的客户端没有要启动的服务、没有 BasicAuthLevel、没有 4 GB 天花板。AnyStorage(v0.2.24;macOS 11+、Windows 10+、Ubuntu 20.04+)走的是中间路线:文件传输用存储协议本身——支持 path-style 与自定义区域的 S3 兼容端点、密钥认证的 SFTP、WebDAV——需要盘符时,再由内置的本地 WebDAV 服务(http://127.0.0.1:3211)提供一个,不装 FUSE、WinFsp 或 macFUSE。应用里打开的每个连接都作为该根下的文件夹出现,免费版可用两个连接。不过上面那些规则对这个映射同样适用:Windows 对回环 WebDAV 服务和别人一视同仁,WebClient 要在跑,BasicAuthLevel 要是 2。
Windows 11 24H2 里 WebDAV 被删了吗?
没有。是弃用不是移除,服务仍随系统提供。变的是它不会自己启动,所以每台机器需要手动开一次。
我的 NAS 在浏览器里能看,为什么做不成驱动器?
因为重定向器问的是另一个问题。它发 OPTIONS 并要求 DAV 响应头,然后发 PROPFIND。一台服务器完全可以正常提供网页,却不在你输入的路径上声明 WebDAV。
50 MB 限制能安全抬高吗?
在合理范围内可以。FileSizeLimitInBytes 是 DWORD,最大 4294967295,改完需要重启 WebClient 或重启机器。它不会让传输变快,只是让传输被允许。
换成 HTTPS 能解决超时吗?
不能。超时是 SendReceiveTimeoutInSec(60 秒)、InternetServerTimeoutInSec(30)和 LocalServerTimeoutInSec(15),与协议无关。对上千条目的目录做一次慢 PROPFIND,两种协议都会撞上。
下一步
- Windows 侧完整清单:Windows 无法连接 WebDAV
- 它会产生的两个错误码:0x80070043 与 错误 67
- 大文件为什么失败:Windows WebDAV 50 MB 限制