上周六晚上十一点,我妹隔着墙喊我:她那台笔记本打不开我台式机上的共享盘。资源管理器地址栏输 \\DESKTOP-8K2J\share,转两秒圈,弹个红叉——"你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问"。
前一天还好好的。中间唯一的变量,是我给台式机装了一次系统更新。
从"重启试试"到最后定位到根因,一共花了两小时十四分钟。真正解决问题的不是网上那套"把这八个服务全设成自动启动",而是一条 445 端口测试——它告诉我端口压根不通,于是后面所有关于 SMB 协议、来宾登录、NTFS 权限的讨论,全是废话。
这也是我想写这篇的原因。搜"Windows 局域网共享连不上",你会拿到十几篇结构差不多的文章:把十几种可能性平铺开,让你从头试到尾。但真实的排查是有顺序的,第 N 层的检查只有在第 N-1 层通了之后才有意义。顺序搞错,你会在错误的层里耗掉一晚上。
这篇按我自己排查的次序写:先分层,再逐层给命令,最后给三条"什么情况别修了、直接换工具"的判断标准。
错误码 0x80070035 对应的英文原文是 "The network path was not found"(来源:Microsoft Learn 错误码与 Windows 客户端共享访问疑难解答)。这句话的措辞很关键——它说的是路径找不到,不是权限不够。
也就是说,这个错误发生在 SMB 协议还没开始谈之前。客户端连"你到底是不是一台我能连上的机器"这一步都没确认,就已经放弃了。所以一上来就去翻共享权限、去给 Everyone 加完全控制,方向从一开始就歪了。
我把整个链路拆成五层,从下往上:
| 层 | 一句话 | 挂了会看到什么 |
|---|---|---|
| 1 名字解析 | 主机名能不能变成 IP | 输 IP 能进,输主机名进不去 |
| 2 端口连通 | 445 端口通不通 | 0x80070035、系统错误 53、转圈后红叉 |
| 3 协议协商 | 双方能不能谈成同一个 SMB 版本 | 能连上但立刻断,或签名相关报错 |
| 4 身份认证 | 对方认不认你这个人 | 反复弹凭据框、"安全策略阻止来宾访问" |
| 5 权限 | 共享权限 + NTFS 权限 | 连上了,但"没有访问权限"、只能读不能写 |
绝大多数教程的问题,是把第 4、5 层的解决方案(开来宾登录、改注册表、Everyone 完全控制)塞给一个其实卡在第 2 层的人。
在访问方那台机器上打开 PowerShell(不用管理员权限也能跑前两条),四条命令:
# 在"要访问共享"的那台机器上跑,不是共享主机上
$H = "DESKTOP-8K2J" # 共享主机的计算机名
$IP = "192.168.1.23" # 共享主机的局域网 IP
# 1) 名字能不能解析出 IPv4
Resolve-DnsName $H -ErrorAction SilentlyContinue |
Select-Object Name, Type, IPAddress
# 2) 445 端口通不通 —— 这条最关键,直接决定后面要不要继续查
Test-NetConnection -ComputerName $IP -Port 445
# 3) 已建立的 SMB 会话:看协商到了哪个版本
Get-SmbConnection
# 4) 共享主机上的 Server 服务活着吗(这条要在主机上跑)
# Get-Service LanmanServer | Select-Object Name, Status, StartType
怎么读结果:
TcpTestSucceeded : False → 卡在第 2 层,去查防火墙和网络位置。net use 却报系统错误 53 → 卡在第 3 层和第 4 层之间,通常是 NetBIOS 助手服务的运行身份问题。我那天的情况是第 2 条直接 False。查到这一步,前面那些"改注册表允许来宾登录"的教程我全都不用看了——因为来宾登录是第 4 层的事,而现在连 TCP 都没握上手。最后发现是系统更新把网络配置文件从"专用"重刷回了"公用",防火墙规则整段失效。
(实测:改回"专用"之后,Explorer 里那台主机立刻出现在"网络"里,共享盘当场能进。)
改网络位置的命令,省得你在设置界面里翻三层菜单:
# 看当前所有网络的配置文件类型
Get-NetConnectionProfile | Select-Object Name, InterfaceAlias, NetworkCategory
# 把指定网络改成"专用"(需要管理员)
Set-NetConnectionProfile -InterfaceAlias "以太网" -NetworkCategory Private
# 把"文件和打印机共享"这一组防火墙规则全部启用
Enable-NetFirewallRule -DisplayGroup "文件和打印机共享"
最后一条命令有个细节值得说:-DisplayGroup 用的是防火墙规则的显示组名,中文系统上就是"文件和打印机共享",英文系统上是 "File and Printer Sharing"。如果你在英文系统上跑中文组名,它会报"找不到",不是权限问题,纯粹是名字对不上。判断方法:
Get-NetFirewallRule -DisplayGroup "*共享*" |
Select-Object DisplayName, Enabled, Profile
这一层的典型症状是:\\192.168.1.23\share 能进,\\DESKTOP-8K2J\share 进不去。很多人会误以为"共享时好时坏",其实一直是好的,坏的是名字。
在家用网络里,Windows 靠三套机制找机器:DNS、LLMNR、NetBIOS。家庭路由器大多不做本地 DNS 注册,所以实际起作用的往往是最老的那套 NetBIOS 广播。而 NetBIOS 广播在现在的网络环境里越来越不可靠:
最快的验证和绕过方式,是临时写 hosts:
# C:\Windows\System32\drivers\etc\hosts
192.168.1.23 DESKTOP-8K2J
192.168.1.23 nas
两个提醒。第一,hosts 文件没有扩展名,用记事本另存时容易变成 hosts.txt,那个是不生效的,改完用 type C:\Windows\System32\drivers\etc\hosts 确认一下文件名。第二,改 hosts 是绕过,不是修复——真正的修复是给共享主机配静态 IP 或者在路由器里做 DHCP 静态绑定。
(实测:我家里那台 NAS 的 IP 被 DHCP 换了三次,每次都表现为"共享盘打不开"。后来在路由器里做了静态绑定,这类问题一次都没再出现。)
至于网上常见的"把 IPv6 关掉",我的看法是别乱关。ping 主机名 经常返回一个 fe80:: 开头的 IPv6 地址,看起来"ping 通了",但 SMB 走的是 IPv4,这会造成巨大的误判。所以 ping 不是好用的诊断工具,Test-NetConnection -Port 445 才是。要验证名字解析,用 Resolve-DnsName 看返回的是不是 A 记录(IPv4)。
这是 0x80070035 最高发的一层,也是我这次卡住的地方。三条路会堵住 445:
一是防火墙规则被网络配置文件挡住。 Windows 防火墙规则是按配置文件(域/专用/公用)分别生效的。"文件和打印机共享"这组规则默认只在专用和域配置文件下启用。系统更新、装新网卡、连过一个新的 WiFi,都可能把当前网络重新判定成"公用"。你的规则一条没删,但它们集体不生效了。
二是第三方安全软件。 某些国产安全卫士、企业级终端防护会在驱动层拦 SMB,这种情况下 Windows 防火墙看起来完全正常,445 就是不通。判断方法:Test-NetConnection 失败,但把安全软件临时退出后立刻通过。
三是 Server 服务没跑。 共享主机上 LanmanServer(显示名 "Server")必须处于 Running 状态,否则 445 根本没在监听。这条要在主机上查,很多人在访问方查半天查不出来。
# 在共享主机上跑
Get-Service LanmanServer, LanmanWorkstation | Select-Object Name, Status, StartType
Get-NetTCPConnection -LocalPort 445 -State Listen -ErrorAction SilentlyContinue
第二条命令如果没输出,就说明这台机器压根没在 445 上监听,跟防火墙无关,问题在服务本身。
端口通了、连上了,但立刻断开、或者报签名相关的错,就进到这一层。这里有三个 2024 年之后的新变化,很多老教程完全没提:
SMB1 在 Win10 1709 之后默认不再安装,不是"默认关闭"。 这两个说法差别很大:关闭可以打开,没安装得先装组件。老 NAS、老网络打印机、部分电视盒子只支持 SMB1,接到新系统上就是连不上。(来源:Microsoft 支持文档,SMBv1 在 Windows 10 Fall Creators Update 及更高版本中默认不安装)
Win11 24H2 开始,SMB 客户端默认要求签名。 微软在 24H2 / Server 2025 里把 SMB 签名改成了默认强制(来源:Microsoft Learn 关于 SMB 签名默认行为的变更说明)。后果是:某些老 Samba 版本、老 NAS 固件协商不上签名,表现就是"认证成功之后立刻断开",日志里看不出什么明确原因。(实测:我们公司内网一台 2016 年的群晖,升级到 24H2 的电脑全都连不上,把客户端签名要求临时关掉就通了。)
2025 年 9 月的一批更新曾经打断过 SMB1 + NetBIOS 的共享。 如果你的设备必须用 SMB1,而且症状是"打完 9 月的补丁之后就坏了",先去查 KB5066835(来源:Microsoft 支持公告)。这种情况下改任何设置都没用,装补丁就行。
查看当前状态:
# 客户端侧
Get-SmbClientConfiguration |
Format-List EnableInsecureGuestLogons, RequireSecuritySignature, EnableSMB2Protocol
# 服务端侧(共享主机上跑)
Get-SmbServerConfiguration |
Format-List EnableSMB1Protocol, EnableSMB2Protocol, RequireSecuritySignature
# SMB1 组件到底装没装
Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol |
Select-Object FeatureName, State
State 是 Disabled 表示装了但没启用,是 DisabledWithPayloadRemoved 才叫没安装。
我要在这里说一句明确的话:除非设备确实只支持 SMB1、且换不掉,否则不要打开 SMB1。 它是勒索软件最喜欢的东西,2017 年那波 WannaCry 走的就是 445 上的 SMB1 漏洞。正确顺序是先升级固件、让设备支持 SMB2/3,实在不行再单独给那个设备开口子。
"你不能访问此共享文件夹,因为组织的安全策略阻止未经身份验证的来宾访问"——这句话几乎只出现一个场景:你访问的是一台"允许来宾访问"的共享,而新版 Windows 默认拒绝来宾登录。 注意"组织"两个字是微软的模板措辞,家里两台电脑也会这么提示,别以为自己被公司策略管了。
如果要开来宾访问,两条路(都需要管理员):
# 路径一:客户端侧策略(推荐用这个,比改注册表干净)
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\LanmanWorkstation" -Force | Out-Null
New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\LanmanWorkstation" `
-Name "AllowInsecureGuestAuth" -PropertyType DWord -Value 1 -Force
# 路径二:PowerShell 直接改 SMB 客户端配置(家庭版没有 gpedit 时用)
Set-SmbClientConfiguration -EnableInsecureGuestLogons $true -Force
组策略路径在:计算机配置 → 管理模板 → 网络 → Lanman Workstation → 启用不安全的来宾登录。
但我的观点是:这是权宜之计,不是解决方案。 允许来宾登录等于允许任何能连上 445 的人无凭据读你的目录。更好的做法是在共享主机上建一个专用本地账户,只给它那一个目录的读写权限:
# 在共享主机上:建一个只用来访问共享的本地账户
$pw = Read-Host "输入密码" -AsSecureString
New-LocalUser -Name "shareuser" -Password $pw -PasswordNeverExpires `
-Description "仅用于局域网共享访问"
# 只给这个账户对这个目录的读写权限(NTFS 层)
icacls "D:\share" /grant "shareuser:(OI)(CI)M" /T
然后访问方用 主机名\shareuser 这个格式登录。这里有个坑:如果共享主机用的是微软账户登录,用户名不是邮箱,也不是显示名,得写成 MicrosoftAccount\你的邮箱 才能过。用本地账户就没有这个麻烦。
还有一个高频原因:凭据缓存。 你改过密码、换过账户,Windows 还在拿旧的凭据去连,报出来的错五花八门,包括 0x80070035 和"拒绝访问"。
cmdkey /list # 看存了哪些凭据
cmdkey /delete:DESKTOP-8K2J # 删掉指定目标的
net use * /delete /y # 断开所有映射并清会话
(实测:有一次怎么都连不上,最后是 cmdkey /list 里留着一条三个月前的旧凭据。删掉之后第一次输入密码就进去了。)
能连上、认证也过了,但提示"没有访问权限",那就是最后一层。这一层最常见的误解是:改了一个地方的权限就够了。 不是。Windows 上访问共享目录的实际权限 = 共享权限 ∩ NTFS 权限,取更严格的那一个。你在共享权限里给了完全控制,但 NTFS 里那个账户只有读取,结果就是只能读。
# 共享权限
Get-SmbShare -Name "share" | Get-SmbShareAccess
# 授权(注意:这改的是共享层,NTFS 层要另外用 icacls)
Grant-SmbShareAccess -Name "share" -AccountName "shareuser" -AccessType Full -Force
# NTFS 权限
icacls "D:\share"
两个容易踩的细节:第一,Grant-SmbShareAccess 改的是共享权限,很多人以为跑完就完事了,结果还是没权限,因为没动 NTFS。第二,D:\share 这个目录本身和它里面的文件可能继承了不同的权限,icacls 加 /T 才是递归到所有子项。
我不会建议你给 Everyone 完全控制。这条建议在网上到处都是,代价是你把整个目录暴露给了同一个局域网里任何人——包括连着同一个 WiFi 的访客、被入侵的智能电视、以及任何一台中招的电脑。宁可多花五分钟建一个专用账户。
坑一:错误 53 不是网络问题,是 NetBIOS 助手的运行身份。 系统错误 53 "找不到网络路径"和 0x80070035 看起来一样,但成因可能很不一样。如果你已经确认 445 通、telnet IP 445 也能连,却还是报 53,去查 TCP/IP NetBIOS Helper(服务名 lmhosts)——它必须以"本地服务"身份运行,如果被改成"本地系统",名字解析链路会断。(来源:Microsoft Learn 疑难解答文档中对该错误的具体说明)
坑二:两台机器同名。 这事儿听着离谱,但装机时用同一个镜像、或者克隆系统盘,真的会出现两台都叫 DESKTOP-XXXX 的机器。表现是"有时候能连上有时候连不上",因为广播里两个同名主机在抢。hostname 一比就知道。
坑三:VPN 起来之后共享全挂。 企业 VPN 常把 445 也纳进隧道路由,你的 192.168.1.23 会被送到对端网关,当然连不上。判断方法:断 VPN 立刻恢复。这种不用修,属于策略冲突,用下面说的替代工具更省事。
坑四:快速启动让共享主机"假死"。 Win10/11 的"快速启动"本质是休眠内核,网卡驱动的某些状态不会被正确重置,共享主机看起来开机了,445 却时有时无。powercfg /h off 关掉休眠能解决,代价是开机慢几秒。
坑五:映射的网络驱动器指向了旧 IP。 路由器重新分配了 IP,映射盘还记着老的。资源管理器里那个红叉盘符不会告诉你原因。net use 列一遍,删掉重映射即可。
修到这一步,我给个判断标准,省得你继续耗:
值得修 SMB 的: 你有一个需要长期挂载的目录(NAS、家庭服务器、电视盒子、打印机),或者你要做映射网络驱动器让一堆软件直接读写。这种情况 SMB 是唯一正解,值得花时间把它配对。
不值得修的: 你只是想在自己两三台设备之间传个文件。这时候继续折腾 SMB 是纯亏——你今天配好了,明天系统更新又可能把它打回来(我这次就是被更新打回来的)。
传文件这件事,我现在的主力工具是 LocalSend:手机、Windows、Mac、Linux 装同一个客户端,连同一个 WiFi 直接互传,不压缩、不过服务器。它不依赖 SMB,所以系统更新、网络位置、来宾登录这些坑一个都碰不到。具体装法和五个平台的坑我写在《LocalSend 实战:手机和电脑互传大文件》里了,这里不重复。
如果只是偶尔要从 iPhone 往 Windows 传个东西,隔空投送那篇也可以先看:iPhone 隔空投送找不到联系人,很多"传不过去"其实是发现机制的问题,不是网络问题。
而如果你要的其实是"在外面连回家里的电脑",那是另一个话题,SMB 不适合暴露到公网(445 是全网被扫得最狠的端口之一)。这种情况走远程桌面或者内网穿透:Win11 开启远程连接全指南。
| 你看到的 | 大概在哪层 | 先做这个 |
|---|---|---|
| 0x80070035,IP 也进不去 | 2 | Test-NetConnection -Port 445 |
| 0x80070035,IP 能进主机名不行 | 1 | 查 Resolve-DnsName,配静态 IP 或 hosts |
| 系统错误 53,445 却是通的 | 3/4 | 查 lmhosts 服务运行身份 |
| "安全策略阻止未经身份验证的来宾访问" | 4 | 建专用账户;实在不行才开来宾登录 |
| 能连上,但"没有访问权限" | 5 | 共享权限和 NTFS 一起看,取交集 |
| 24H2 之后老 NAS 突然连不上 | 3 | 查 SMB 签名要求,先升固件 |
| 连得上但一会儿就断 | 3/4 | 查签名协商、查双机同名、查快速启动 |
最后一句总结:0x80070035 这个错误码本身信息量很低,但它出现的位置信息量很高。 只要你能确认它是在第 2 层出现的,剩下的所有排查都可以省掉。先测端口,再谈权限——顺序对了,这件事就是个十分钟的问题。
本文参考了以下资料,结合博主个人排查经验进行了二次创作: