就像你知道朋友家的地址,但按门铃时没人应答,或者门锁坏了。

下面我将从易到难,为你提供一套完整的排查和解决方案。
核心思路:
这个错误通常不是由单一原因引起的,而是由 网络配置、防火墙、服务状态、权限 等多个因素共同导致的,请按照以下步骤逐一排查。
第一步:基础检查(最常见的原因)
-
检查网络连接和工作组/家庭组
- 确保在同一个网络:确认你的电脑和目标电脑连接的是同一个路由器(同一个局域网),如果你连接的是 Wi-Fi,而目标电脑是有线连接,它们可能处于不同的网络子网,导致无法通信。
- 检查工作组:在两台电脑上,右键点击“此电脑” -> “属性”,查看“工作组”是否相同,如果不同,需要将它们设置为相同的工作组,这是 NetBIOS 协议正常工作的基础。
-
检查目标电脑是否开机并启用共享
(图片来源网络,侵删)- 目标电脑必须开机:这听起来很傻,但请务必确认。
- 启用网络发现和文件共享:
- 在目标电脑上,进入“控制面板” -> “网络和 Internet” -> “网络和共享中心”。
- 点击左侧的“更改高级共享设置”。
- 展开“当前配置文件”(通常是“专用”网络)。
- 确保 “启用网络发现” 和 “启用文件和打印机共享” 都被选中。
- 如果你的网络是“公用”网络,请确保“来宾或公用”的设置中,“启用网络发现”和“启用文件和打印机共享”也是开启的(但公用网络安全性较低,不推荐)。
-
检查共享文件夹是否存在
在目标电脑上,直接访问该共享文件夹,确保它确实存在并且没有被意外删除。
第二步:使用网络诊断工具
-
Ping 测试(测试基本网络连通性)
- 在你的电脑上,按
Win + R,输入cmd打开命令提示符。 - 输入
ping <目标电脑的IP地址>,ping 192.168.1.101。 - 如果可以收到回复:说明你的电脑和目标电脑之间的物理连接是通的,IP 地址通信正常,问题更可能出在更高层的协议(如 SMB)或防火墙上。
- 请求超时”或“目标主机无法访问”:说明基础网络连接有问题,请检查:
- 两台电脑是否在同一网段。
- 路由器是否正常工作。
- 目标电脑的防火墙是否阻止了 ICMPv4 请求(Ping 使用的是 ICMP 协议)。
- 在你的电脑上,按
-
Ping 测试计算机名
(图片来源网络,侵删)- 在命令提示符中,输入
ping <目标电脑的计算机名>,ping DESKTOP-ABC123。 - 如果可以解析到 IP 并收到回复:说明 NetBIOS 名称解析工作正常,这是“找不到网络路径”错误中一个比较好的迹象,说明问题很可能在防火墙或服务上。
- Ping 请求找不到主机”:说明 NetBIOS 名称解析失败,请跳到 第五步 检查相关服务。
- 在命令提示符中,输入
第三步:检查防火墙(最常见的原因之一)
Windows 自带的防火墙或第三方杀毒软件的防火墙是导致此错误的头号元凶,它们会阻止 SMB (端口 445) 等关键网络端口。
-
临时禁用防火墙进行测试
- 在目标电脑上:
- 进入“控制面板” -> “系统和安全” -> “Windows Defender 防火墙”。
- 点击左侧的“启用或关闭 Windows Defender 防火墙”。
- 临时关闭“域网络”、“专用网络”、“公用网络”的防火墙。
- 尝试重新访问共享文件夹,如果成功了,100% 是防火墙的问题。
- 安全提示:测试成功后,请务必立即重新启用防火墙,然后通过添加“例外规则”的方式来允许共享,而不是永久关闭。
- 在目标电脑上:
-
添加防火墙例外规则(正确做法)
- 重新启用防火墙。
- 再次进入“Windows Defender 防火墙”。
- 点击左侧的“允许应用或功能通过 Windows Defender 防火墙”。
- 点击“更改设置”(需要管理员权限)。
- 找到 “文件和打印机共享”,确保在“专用”和“公用”列中都是勾选状态。
- 如果找不到,可以点击“允许其他应用...”,然后手动添加
svchost.exe(确保它位于C:\Windows\System32\目录下),并勾选“专用”和“公用”。
-
检查第三方安全软件
如果你安装了 360、火绒、卡巴斯基、诺顿等第三方杀毒或安全软件,请暂时禁用其网络防火墙功能,然后再次尝试访问,如果成功,说明是这些软件的规则问题,需要在其设置中添加信任程序或放行局域网通信。
第四步:检查服务
SMB 文件共享依赖于几个核心 Windows 服务,请确保在目标电脑上,以下服务正在运行:
- Function Discovery Provider Host
- Function Discovery Resource Publication
- SSDP Discovery
- UPnP Device Host
- Server (最关键的服务)
- Workstation (最关键的服务)
如何检查和启动服务:
- 按
Win + R,输入services.msc并回车。 - 在服务列表中找到上述服务。
- 双击每个服务,确保其“启动类型”为“自动”,服务状态”为“正在运行”,如果不是,请点击“启动”,然后点击“应用”和“确定”。
第五步:高级排查(如果以上步骤都无效)
-
启用 NetBIOS over TCP/IP
- 在目标电脑上,右键点击“网络” -> “属性” -> “更改适配器选项”。
- 右键点击你正在使用的网络连接(如“以太网”或“WLAN”)-> “属性”。
- 选中“Internet 协议版本 4 (TCP/IPv4)” -> “属性”。
- 点击右下角的“高级”按钮。
- 切换到 “WINS” 选项卡。
- 确保 “NetBIOS 设置” 被设置为 “默认”(通常是首选),如果设置为“禁用 NetBIOS”,可能会导致旧版系统或某些软件无法找到网络路径。
-
重置网络堆栈
- 在你的电脑上(有时也需要在目标电脑上操作),以管理员身份打开命令提示符。
- 依次执行以下命令:
netsh winsock reset netsh int ip reset ipconfig /release ipconfig /renew ipconfig /flushdns
- 执行完毕后,重启电脑。
-
检查 SMB 协议版本
- 在某些情况下,特别是新版本的 Windows (如 Win10/11) 连接旧版本的服务器时,SMBv1 可能被禁用。
- 在目标电脑上,以管理员身份打开 PowerShell 或命令提示符。
- 输入以下命令检查 SMBv1 状态:
Get-SmbServerConfiguration | Select EnableSMB1Protocol
- 如果返回
False,说明 SMBv1 已禁用。强烈建议不要重新启用 SMBv1,因为它存在严重的安全漏洞,你应该确保客户端和服务器都支持更安全的 SMBv2/v3。 - 可以尝试在客户端电脑上强制使用 SMBv2/v3:
echo [AutoShareServer]>c:\windows\inf\smbv2.reg echo "HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters\SMB1">>c:\windows\inf\smbv2.reg echo "0">>c:\windows\inf\smbv2.reg regedit /s c:\windows\inf\smbv2.reg
(注意:这是一个比较底层的操作,请在操作前备份重要数据。)
排查流程图
开始
|
V
检查是否在同一网络和工作组? -- 是 --> 检查目标电脑共享是否开启?
| 