跳到主要内容
AnyStorage
免费下载

WebDAV 错误码

net use 错误 67:找不到网络名

用 net use 映射 WebDAV 报「发生系统错误 67」的原因不多。WebClient 服务、HTTP 上的 Basic 认证、UNC 写法,逐条给出可用的命令。

net use 为什么对 WebDAV 地址返回系统错误 67,微软列出的原因,以及修好之后真正能用的命令。

net use 错误 67,发生系统错误 67,net use WebDAV

只有两行,没有解释

cmd

C:\>net use Z: http://dav.example.com/
发生系统错误 67。

找不到网络名。

错误 67 在微软的 Win32 错误列表里是 ERROR_BAD_NET_NAME,说明为「The network name cannot be found.」。文件资源管理器用十六进制显示同一个失败,也就是 错误 0x80070043。十进制 67 等于 0x43,而 0x8007 是 Windows 把 Win32 错误包成 HRESULT 时加的前缀。一个失败,两种写法。

命令行更适合排查:一次只改一个变量,结果立刻可见。

微软说的原因

WebDAV 重定向程序文档列出了导致驱动器映射报系统错误 67 的六个条件。在非 IIS 服务器上,前三个几乎能解释所有情况。

文档记载的六个原因及对应动作
文档记载的原因对你意味着什么
服务器上没装或没运行 IIS只对 IIS 目标有意义;先确认普通 GET 有响应
客户端没安装 WebDAV 重定向程序Windows Server 上添加「桌面体验」功能;桌面版自带
客户端的 WebClient 服务没有运行启动它,并设为自动启动
站点上没有启用 WebDAV检查响应里是否带 DAV:
用 HTTP 而不是 HTTPS 配 Basic 认证提高 BasicAuthLevel,或把端点换成 HTTPS
Windows 认证的 FQDN 站点缺少代理绕过条目在客户端的绕过列表里加上该站点

第一步:确认重定向程序还活着

映射出来的 WebDAV 驱动器由 WebClient 服务处理。微软在 2023 年 11 月弃用了它,并在同一份公告里写明 Webclient 服务在 Windows 上默认不启动。在较新的机器上,这一条是答案的概率最高。

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 WebClient

服务起来后再试一次映射。如果之前已经失败过,等一分钟:ServerNotFoundCacheLifeTimeInSec 默认 60 秒,在这个窗口内 WebClient 会直接返回缓存的失败,根本不联系服务器。

第二步:把命令写对

net use 对 WebDAV 接受两种形式。纯 URL 形式出现在微软的操作说明里:NET USE * http://www.example.com,其中 * 表示用下一个空闲盘符。UNC 形式由 DavGetHTTPFromUNCPath 函数的文档定义为 \\server[@SSL][@port][\path]@SSL 表示 HTTPS,@port 在端口不是 80 或 443 时必须写。DavWWWRoot 指向 WebDAV 服务器的根。

cmd

rem 默认端口的 HTTPS
net use Z: \\dav.example.com@SSL\DavWWWRoot\files /user:alice *

rem 显式写端口的 HTTPS
net use Z: \\dav.example.com@SSL@443\DavWWWRoot\files /user:alice *

rem 自定义端口的明文 HTTP
net use Y: http://dav.example.com:8080/remote.php/dav/files/alice /user:alice *

末尾那个 * 不是装饰。文档里的 net use 语法接受密码或 *,写 * 时 Windows 会提示你输入,这样密码不会留在命令历史里。想让映射在重启后仍然存在,加 /persistent:yes

单靠写法就能造成错误 67 的有三种:漏掉协议(于是走了 SMB)、漏掉非默认端口、以及服务器在 /dav/remote.php/dav/files/alice 这类子路径下发布 WebDAV,你却映射了站点根。

第三步:允许 HTTP 上的 Basic 认证

如果端点是 http:// 且使用 Basic 认证,Windows 会在弹出密码框之前就拒绝。开关是 WebClient 参数键下的 DWORD BasicAuthLevel,文档给出三个取值:0 禁用 Basic 认证,1 仅 SSL 站点,2 SSL 与非 SSL 都允许。默认是 1

cmd

reg query "HKLM\SYSTEM\CurrentControlSet\Services\WebClient\Parameters" /v BasicAuthLevel
reg add "HKLM\SYSTEM\CurrentControlSet\Services\WebClient\Parameters" /v BasicAuthLevel /t REG_DWORD /d 2 /f
net stop WebClient
net start WebClient

重启服务是必须的,微软文档对这个键下的每个值都这么写。同时要明白取舍:级别 2 会让凭据以明文传输。对 127.0.0.1 合理,对自己的局域网可以接受,对公网就是错的。

当错误号不是 67 的时候

同一份文档还列出了 net use 对 WebDAV 端点返回的其他编号,它们比 67 有用得多。认得它们,就不会把 WebClient 的修法套到权限问题上。

net use 对 WebDAV 服务器的其他失败
错误Windows 打印的文本实际含义
5Access is denied账号或密码错误,或对内容没有权限
58The specified server cannot perform the requested operation服务器主机名绑定不匹配
59An unexpected network error occurred站点或其应用程序池已停止
224Access Denied. Before opening files in this location, you must first add the web site to your trusted sites listURL 所在的区域不被重定向程序信任
1244The operation being request was not performed because the user has not been authenticated没有启用任何认证方式,或登录类型不匹配
1920The file cannot be accessed by the system该账号没有对应的创作规则

1244 那句话连拼写错误都是微软原文。

重启之后就消失的映射

映射能用但注销后消失,这是有记录的行为而不是 bug:微软明确说明从 Windows 7 起,Basic 认证的凭据无法由凭据管理器保存,并在自家排障文章里建议用登录脚本重新执行 net use。对包括本机服务在内的 Basic 认证 WebDAV,这就是实际答案。

powershell

if (-not (Test-Path Y:)) {
  net use Y: http://127.0.0.1:3211/ /user:anystorage
}

映射本机的 WebDAV 服务,比如 AnyStorage

AnyStorage 就在你面前这台机器上跑 WebDAV 服务:侧边栏 Services,WebDAV 标签,Start,端点是 http://127.0.0.1:3211。应用里打开的每个连接都是根下的一个文件夹,所以一个盘符就能到达 S3 桶、Cloudflare R2、Backblaze B2、MinIO、Google Drive、OneDrive、Dropbox 或 SFTP 主机。不用装文件系统驱动,所以 WinFsp 从不出场。

Windows 并不因为服务器在本机就放宽规则,所以上面的条目照样适用:HTTP 端点需要 BasicAuthLevel2。用户名默认 anystorage,密码是首次使用时生成的 24 个字符,两者都在 WebDAV 标签里带复制按钮。免费版挂载只读,读写属于 Pro。连接是懒加载的,所以启动后只有在应用里打开过的连接才会出现在根目录。

错误 67 和 0x80070043 是一回事吗?

是。67 是 Win32 的 ERROR_BAD_NET_NAME0x80070043 是同一个值包成 HRESULT 以便外壳显示。

net use 成功了,但资源管理器里看不到这个盘?

它们运行在不同的安全上下文里。在管理员命令提示符下建立的映射,非管理员的资源管理器看不到,反之亦然。想在资源管理器里看到,就用普通命令提示符执行。

URL 末尾要加斜杠吗?

加了没坏处。重定向程序的第一个请求是对你给的路径发 OPTIONS,有些服务器对此敏感。不加失败时,先补上斜杠再去怀疑凭据。

这些步骤能全部跳过吗?

只为浏览的话,盘符确实方便。批量传输则建议在直接对接存储 API 的客户端里做:没有服务要启动,没有注册表要改,也没有 4GB 的单文件上限。

接着看