注意!Windows Codex 更新可能导致 SMB 服务异常中断,排查教程在此
最近发现圈子里有个挺坑的现象,不少小伙伴在折腾 Windows 服务器或者本地 NAS 的时,突然发现 SMB(Server Message Block)协议挂了。明明昨天还能正常传文件,今天死活连不上。排查了半天,甚至以为是中了病毒或者网络配置飞了。
结果最后发现,居然是 Windows 的 Codex 组件在背后搞鬼,偷偷把 SMB 服务给禁用了。今天我就来聊聊这个问题,顺便给大家整理一份排查和修复的保姆级教程。
什么是 Codex?它为什么要动我的 SMB?
首先,咱们得搞清楚这个 Codex 是个啥。在很多 Windows 环境(特别是服务器版本或者某些精简版)中,Codex 组件通常与系统更新、媒体扩展或者特定的第三方兼容层有关。它并不是微软原生的标准组件名称,更像是某些集成环境或特定更新包里的一个模块。
检查服务窗口中的 Server (LanmanServer) 和 Workstation 服务状态
问题就出在这里:有些版本的 Codex 在进行后台自动更新或配置重置时,会误判 SMB 协议的安全性。为了所谓的“优化系统性能”或“增强安全性”,它可能会直接修改注册表,或者通过 PowerShell 命令将 SMB 1.0 甚至 SMB 2.0/3.0 的服务给禁用。
SMB 可是局域网共享的命根子啊,它一断,你的映射驱动器就全红了,Docker 容器挂载的 volume 也可能报错,坑人不浅。
症状自测:你的 SMB 是不是被禁用了?
在 Windows 功能中启用 SMB 协议支持
如果你遇到以下几种情况,大概率就是中招了:
- 映射网络驱动器断开:明明 IP 能 ping 通,网页也能打开,但就是无法访问共享文件夹。
- NAS 无法连接:群晖或威联通后台显示连接被拒绝,但在其他设备上正常。
- 服务报错:在事件查看器里能看到关于 SMB 服务的错误日志,提示服务未运行或协议不可用。
- Docker 报错:如果是跑在 Windows 上的 Docker,挂载本地目录可能会失败,提示路径不存在。
修复教程:三步恢复 SMB 服务
既然知道了原因,修复起来其实并不难,主要就是检查服务状态和注册表配置。大家跟着一步步操作。
第一步:检查 SMB 服务状态
- 按
Win + R键,输入services.msc回车。 - 在服务列表中找到以下两项:
- Server(服务名可能是 LanmanServer)
- Workstation(服务名可能是 LanmanWorkstation)
- 确保这两个服务的状态都是“正在运行”,启动类型最好是“自动”或“自动(延迟启动)”。如果是停止状态,右键点击启动即可。
第二步:启用 SMB 功能(最关键的一步)
很多时候服务看似开了,但协议层面的功能被关了。我们需要通过 Windows 功能面板开启它。
- 打开“控制面板” -> “程序和功能” -> “启用或关闭 Windows 功能”。
- 在列表中找到 SMB 1.0/CIFS File Sharing Support。
- 注意:为了安全起见,通常不建议开启 SMB 1.0(毕竟它有 WannaCry 漏洞的风险),但也得看你的老旧设备需求。如果你只是 Windows 10/11 互传,其实主要靠 SMB 2.0/3.0。
- 确保下层的 SMB Direct 和 SMB Server 这类选项是被勾选的。
如果你懒得点鼠标,直接用管理员权限打开 PowerShell,输入以下命令确保 SMB 协议是开启的:
Set-SmbServerConfiguration -EnableSMB2Protocol $true
Set-SmbServerConfiguration -EnableSMB1Protocol $false # 安全起见建议关闭,除非必须
或者检查客户端配置:
Get-SmbClientConfiguration
确认 RequireSecuritySignature 等配置没有被异常修改。
第三步:防火墙与注册表排查
Codex 有时候会改防火墙规则。你需要检查一下。
- 打开
Windows Defender 防火墙->高级设置。 - 点击左侧的
入站规则,在右侧找到“文件和打印机共享”相关的规则。确保它们是“已启用”的状态,尤其是针对“域专用”和“公用”配置文件的规则。
如果以上都没问题,就要进注册表挖一挖了(操作前请记得备份注册表):
Win + R输入regedit。- 定位到
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters。 - 查看右侧是否有名为
SMB1或SMB2的 DWORD 值,默认值为 0 即为启用。如果被改成了 1,记得改回 0,然后重启电脑。
避坑指南:如何防止 Codex 再次作妖?
既然知道 Codex 可能会乱动配置,咱们就得防着点。如果你使用的是集成好的 Windows 环境(比如某些自带面板的 VPS 镜像),可以考虑这样做:
- 暂停自动更新:如果是生产环境,建议暂时关闭 Windows Update,等更新稳定了再手动打补丁。
- 禁止 Codex 自启:在任务计划程序里,找到与 Codex 相关的触发器,将其禁用。
- 脚本监控:写一个简单的 PowerShell 脚本,定期检查 SMB 服务状态,一旦发现服务停了就自动拉起,配合发邮件告警,这才是运维该有的样子。
写在最后
Windows 作为主力系统虽然方便,但这种“偷偷改配置”的毛病确实让人头大。SMB 协议作为局域网共享的核心,一旦瘫痪非常影响效率。希望今天的教程能帮大家解决燃眉之急,如果你还遇到过其他由于组件更新导致系统抽风的奇葩问题,欢迎在评论区交流避坑!

评论已关闭