In Microsoft docs, it is said that SMB can be turned on with the PowerShell command Set-SmbServerConfiguration -EnableSMB2Protocol $true. Many websites also say that it can be turned on via 'Turn Windows Features On Or Off' in Control Panel. The first method requires no restart while the second method does. So is there a difference between these two?
1 Answer
In Windows, SMBv1 and SMBv2/3 are implemented in two separate drivers (Srv and Srv2) – if an SMBv1 handshake is received, one hands off the connection to another.
Disabling either SMBv1 or SMBv2 via Set-SmbServerConfiguration will just make the driver refuse to negotiate the corresponding protocol. The driver is still there and running, but it only does what the configuration tells it to do.
Meanwhile, disabling SMBv1 via Control Panel or Disable-WindowsOptionalFeature will actually uninstall the 'Srv' driver entirely. (There is no corresponding option for removing SMBv2.)