如何确定Windows Server 2008 R2上已启用的SMB版本
针对你遇到的问题,这里有几个实用的方法来确认服务器当前启用的SMB版本:
1. 检查SMB对应驱动服务的运行状态
你看到的MRxSmb10对应SMB 1.0协议,MRxSmb20对应SMB 2.0协议。可以通过sc.exe直接查询这两个服务的状态:
检查SMB 1.0服务状态:
sc.exe query MRxSmb10查看输出中的
STATE字段:如果显示RUNNING,说明SMB 1.0处于启用状态;如果是STOPPED或DISABLED,则表示未启用。检查SMB 2.0服务状态:
sc.exe query MRxSmb20同样通过
STATE字段判断,RUNNING即为启用状态。
2. 验证注册表中的SMB协议开关
虽然你在LanmanServer路径下没找到相关条目,但可以检查客户端服务的注册表参数(Windows Server 2008 R2中,SMB协议的启用/禁用通常通过客户端或服务端的注册表键值控制):
打开注册表编辑器,导航到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters
- 如果存在
SMB1DWORD值:- 值为
1表示SMB 1.0启用 - 值为
0表示SMB 1.0禁用
- 值为
- 如果存在
SMB2DWORD值:- 值为
1表示SMB 2.0启用 - 值为
0表示SMB 2.0禁用
- 值为
如果这些键值不存在,说明系统处于默认状态:Windows Server 2008 R2默认同时启用SMB 1.0和SMB 2.0,服务器会根据连接的客户端协商使用对应的协议版本。
3. 通过实际连接测试验证
你可以用一台支持SMB 2.0的设备(比如Windows 7及以上系统)尝试连接这台2008 R2服务器的共享文件夹,然后在客户端设备上执行Get-SmbConnection命令(如果客户端支持的话),查看输出中的Dialect字段,就能知道当前连接使用的SMB版本。
如果只有这台2008 R2服务器可用,也可以查看系统事件日志:
- 打开事件查看器,导航到
Windows日志 -> 系统 - 搜索来源为
Srv或LanmanServer的事件,事件ID 3099(SMB 2.0连接)或相关协议协商的日志,从中可以确认启用的版本。
内容的提问来源于stack exchange,提问作者beginner

