Windows 局域网共享连不上:0x80070035 分五层排查,先测端口再谈权限(2026)

Updated on in apps

上周六晚上十一点,我妹隔着墙喊我:她那台笔记本打不开我台式机上的共享盘。资源管理器地址栏输 \\DESKTOP-8K2J\share,转两秒圈,弹个红叉——"你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问"。

前一天还好好的。中间唯一的变量,是我给台式机装了一次系统更新。

从"重启试试"到最后定位到根因,一共花了两小时十四分钟。真正解决问题的不是网上那套"把这八个服务全设成自动启动",而是一条 445 端口测试——它告诉我端口压根不通,于是后面所有关于 SMB 协议、来宾登录、NTFS 权限的讨论,全是废话。

这也是我想写这篇的原因。搜"Windows 局域网共享连不上",你会拿到十几篇结构差不多的文章:把十几种可能性平铺开,让你从头试到尾。但真实的排查是有顺序的,第 N 层的检查只有在第 N-1 层通了之后才有意义。顺序搞错,你会在错误的层里耗掉一晚上。

这篇按我自己排查的次序写:先分层,再逐层给命令,最后给三条"什么情况别修了、直接换工具"的判断标准。

先说结论:0x80070035 说的不是"共享坏了"

错误码 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

怎么读结果:

  • 第 1 条返回了 IPv4,第 2 条 TcpTestSucceeded : False → 卡在第 2 层,去查防火墙和网络位置。
  • 第 1 条空的,但直接用 IP 能进 → 卡在第 1 层,名字解析问题。
  • 第 2 条 True,net use 却报系统错误 53 → 卡在第 3 层和第 4 层之间,通常是 NetBIOS 助手服务的运行身份问题。
  • 第 2 条 True,能看到凭据框或"拒绝访问" → 进展到第 4、5 层了,往下看认证和权限两节。

我那天的情况是第 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

第一层:名字解析——IP 能通、主机名不通

这一层的典型症状是:\\192.168.1.23\share 能进,\\DESKTOP-8K2J\share 进不去。很多人会误以为"共享时好时坏",其实一直是好的,坏的是名字。

在家用网络里,Windows 靠三套机制找机器:DNS、LLMNR、NetBIOS。家庭路由器大多不做本地 DNS 注册,所以实际起作用的往往是最老的那套 NetBIOS 广播。而 NetBIOS 广播在现在的网络环境里越来越不可靠:

  • 路由器开了 AP 隔离(很多"访客网络"默认开),广播直接过不去。
  • 机器上装了某些 VPN 客户端,会把 LLMNR 抢走。
  • 两台机器版本差得多(一台 Win7 一台 Win11),广播行为不一致。

最快的验证和绕过方式,是临时写 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)。

第二层:445 端口——防火墙和"公用网络"

这是 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 上监听,跟防火墙无关,问题在服务本身。

第三层:SMB 协议协商

端口通了、连上了,但立刻断开、或者报签名相关的错,就进到这一层。这里有三个 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 里留着一条三个月前的旧凭据。删掉之后第一次输入密码就进去了。)

第五层:权限——共享权限和 NTFS 权限是取交集

能连上、认证也过了,但提示"没有访问权限",那就是最后一层。这一层最常见的误解是:改了一个地方的权限就够了。 不是。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 也进不去2Test-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 层出现的,剩下的所有排查都可以省掉。先测端口,再谈权限——顺序对了,这件事就是个十分钟的问题。

本文参考了以下资料,结合博主个人排查经验进行了二次创作: