通过修改注册表禁用 SMBv1 协议是修复相关漏洞风险的有效手段,适用于 Windows Server 及 Windows 10/11 环境,但需确认内网无依赖 SMBv1 的老旧设备。
先说结论:修改注册表可彻底关闭 SMBv1 服务入口,适合无法使用 PowerShell 或组策略的单机加固场景。
- 先判断:确认业务系统不依赖 Windows XP、Server 2003 或旧版 NAS 存储。
- 优先做:备份注册表并禁用 LanmanServer 参数中的 SMB1 键值。
- 再验证:重启后检查注册表项及 mrxsmb10 服务状态。
命令速用版
若需批量处理或避免手动编辑错误,可使用命令行直接写入注册表项,执行后需重启系统。
reg add "HKLM\\SYSTEM\\CurrentControlSet\\Services\\LanmanServer\\Parameters" /v SMB1 /t REG_DWORD /d 0 /f sc config mrxsmb10 start= disabled
为什么会这样
SMBv1 协议设计年代较早,缺乏现代安全加密机制,易受中间人攻击和漏洞利用。
微软官方文档指出 SMBv1 存在已知安全风险,禁用该协议可阻断基于 SMB 漏洞的传播路径,同时不影响 SMBv2 和 SMBv3 的正常文件共享功能。
分步处理
手动修改注册表前请务必备份当前注册表分支,操作错误可能导致网络服务异常。
步骤 1:打开注册表编辑器
按 Win + R 输入 regedit,定位到 HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\LanmanServer\\Parameters。
步骤 2:创建或修改键值
在右侧新建 DWORD (32 位) 值,命名为 SMB1,将数值数据设置为 0。
步骤 3:禁用相关驱动服务
定位到 HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\mrxsmb10,修改 Start 键值为 4。
步骤 4:重启系统
注册表修改涉及底层驱动,必须重启计算机才能生效。
怎么验证是否生效
重启后再次打开注册表编辑器,确认 SMB1 键值仍为 0,且 mrxsmb10 服务的 Start 值为 4。
可在命令行执行 sc query mrxsmb10,若返回状态为 SERVICE_DISABLED 则表明禁用成功。
常见坑
部分旧版网络打印机或 NAS 设备仅支持 SMBv1,禁用后可能导致无法访问共享文件夹。
若遇到文件共享突然中断,需优先排查客户端是否强制使用了 SMBv1 协议。
常见问题
禁用 SMBv1 会影响 SMBv2 吗?
不会影响,SMBv2 和 SMBv3 协议栈独立运行,禁用 SMBv1 仅阻断旧协议连接。
修改注册表后必须重启吗?
必须重启,因为 SMB 驱动在系统启动时加载,运行时修改无法卸载已加载的驱动模块。
参考来源
Microsoft Learn - How to detect, enable and disable SMBv1, SMBv2, and SMBv3 in Windows - https://learn.microsoft.com/en-us/troubleshoot/windows-server/networking/detect-enable-and-disable-smbv1-v2-v3