Windows OS Hub
  • Windows
    • Windows 11
    • Windows 10
    • Windows Server 2025
    • Windows Server 2022
    • Windows Server 2019
    • Windows Server 2016
  • Microsoft
    • Active Directory (AD DS)
    • Group Policies (GPOs)
    • Exchange Server
    • Azure and Microsoft 365
    • Microsoft Office
  • Virtualization
    • VMware
    • Hyper-V
    • Proxmox
  • PowerShell
  • Linux
  • Home
  • About

Windows OS Hub

  • Windows
    • Windows 11
    • Windows 10
    • Windows Server 2025
    • Windows Server 2022
    • Windows Server 2019
    • Windows Server 2016
  • Microsoft
    • Active Directory (AD DS)
    • Group Policies (GPOs)
    • Exchange Server
    • Azure and Microsoft 365
    • Microsoft Office
  • Virtualization
    • VMware
    • Hyper-V
    • Proxmox
  • PowerShell
  • Linux

 Windows OS Hub / Windows 11 / How to Check, Enable or Disable SMB Protocol Versions on Windows

July 3, 2025

How to Check, Enable or Disable SMB Protocol Versions on Windows

The Server Message Block (SMB) is a client-server network protocol used in Windows networks to provide remote access to shared files, printers, other network resources, and for interprocess communication. TCP port 445 is used for communication between SMB clients and servers. In this article, we’ll explore the versions of the SMB protocol available across different Windows versions (and how they relate to samba versions in Linux); how to check the SMB version in use on your computer; and how to enable/disable the SMBv1, SMBv2, and SMBv3 protocol dialects on a Windows computer (client or server).

Contents:
  • SMB Protocol Versions in Windows
  • How to Check SMB Version on Windows
  • Find Used SMB Protocol Versions with Get-SMBConnection
  • Why Is SMBv1 Disabled in Newer Windows Versions?
  • How to Enable and Disable SMBv1, SMBv2, and SMBv3 on Windows
  • How to Detect Which SMB Versions Are Enabled on Network Computers

SMB Protocol Versions in Windows

There are several versions of the SMB protocol (dialects) that have consistently appeared in new Windows versions (and Samba).

  • CIFS – Windows NT 4.0
  • SMB 1.0 – Windows 2000
  • SMB 2.0 – Windows Server 2008 and Windows Vista SP1 (supported in Samba 3.6)
  • SMB 2.1 – Windows Server 2008 R2 and Windows 7 (Samba 4.0)
  • SMB 3.0 – Windows Server 2012 and Windows 8 (Samba 4.2)
  • SMB 3.02 – Windows Server 2012 R2 and Windows 8.1 (partially supported in Samba)
  • SMB 3.1.1 – Windows Server 2016 and Windows 10 (support for this feature was introduced in Samba 4.3, and it is now used by default)
  • SMB 3.1.1 (*) – this version of SMB was introduced in Windows 11 and Windows Server 2022. It received support for SMB over QUIC, compression of SMB file traffic, and encryption with AES-256-GCM and AES-256-CCM support. Starting with Windows 11 24H2, SMB packet signing is mandatory.
The Samba package is used to implement the SMB protocol in Linux/Unix. We have indicated in brackets which versions of Samba support each SMB dialect.

SMB is a client-server protocol in which an SMB server provides access to shared resources for SMB clients.

In SMB communication, the client and server use the maximum SMB protocol version supported by both the client and the server. Use the following summary table to determine which SMB protocol version is selected when different versions of Windows interact.

Operating SystemWin 10/11, Win Server 2016/ 2019/ 2022/ 2025Windows 8.1, Win Server 2012 R2Windows 8,Server 2012Windows 7,Server 2008 R2Windows Vista,Server 2008Windows XP, Server 2003 and earlier
Windows 10 and 11, Windows Server 2016/2019/ 2022/2025SMB 3.1.1SMB 3.02SMB 3.0SMB 2.1SMB 2.0SMB 1.0
Windows 8.1, Server 2012 R2SMB 3.02SMB 3.02SMB 3.0SMB 2.1SMB 2.0SMB 1.0
Windows 8, Server 2012SMB 3.0SMB 3.0SMB 3.0SMB 2.1SMB 2.0SMB 1.0
Windows 7, Server 2008 R2SMB 2.1SMB 2.1SMB 2.1SMB 2.1SMB 2.0SMB 1.0
Windows Vista, Server 2008SMB 2.0SMB 2.0SMB 2.0SMB 2.0SMB 2.0SMB 1.0
Windows XP, 2003 and earlierSMB 1.0SMB 1.0SMB 1.0SMB 1.0SMB 1.0SMB 1.0

For example, when a Windows 8.1 client computer connects to a Windows Server 2016 file server, the SMB 3.0.2 protocol is used.

According to this table, Windows XP and Windows Server 2003 can only use SMB 1.0 to access shared files and folders on the server (this protocol is disabled by default on modern Windows versions).  This means that computers running Windows XP or Windows Server 2003/R2 (no longer supported) will not be able to access shared folders on machines running newer versions of Windows.

For example, clients using Windows XP or Server 2003 will be unable to access the SYSVOL and NETLOGON folders on domain controllers or log in to Active Directory (AD) if a DC is running Windows Server 2012 R2 or a later version.

When trying to connect to a resource on a file server with SMB v1 disabled from legacy clients, an error appears:

The specified network name is no longer available
A computer running a desktop OS version (such as Windows 10 or 11) and being used as an SMB server can support a maximum of 20 concurrent SMB connections.

How to Check SMB Version on Windows

Run the PowerShell command to determine which SMB protocol versions (dialects) are available on a computer:

Get-SmbServerConfiguration | select EnableSMB1Protocol,EnableSMB2Protocol

How to check which SMB version is enabled on Windows with PowerShell

This command returned that the SMB1 protocol is disabled (EnableSMB1Protocol = False), and the SMB2 and SMB3 protocols are enabled (EnableSMB2Protocol = True).

In Windows, it is not possible to disable or enable SMBv3 or SMBv2 separately. These protocols are always enabled/disabled only together since they use the same stack.

SMB client functionality is provided by the LanmanWorkstation service, while SMB server functionality is handled by the LanmanServer. Check that these services are running:

Get-Service LanmanServer,LanmanWorkstation

lanman server and workstation smb service on Windows

For legacy Windows versions (Windows 7, Vista, and Windows Server 2008 R2/2008), you can view the enabled SMB protocols in the registry:

Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty $_.pspath}

If this registry key doesn’t contain items named SMB1 or SMB2, then both of these protocols are enabled (this is the default configuration).

Checking smb version on Windows 7 SP1

In earlier versions of Windows, you could find out which SMB dialects are allowed to be used as clients:

sc.exe query mrxsmb10

SERVICE_NAME: mrxsmb10
TYPE : 2 FILE_SYSTEM_DRIVER
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0

sc.exe query mrxsmb20

SERVICE_NAME: mrxsmb20
TYPE : 2 FILE_SYSTEM_DRIVER
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0

In both cases, the services are running (STATE = 4 Running). This means that the current Windows device can connect to both SMBv1 and SMBv2 hosts.

Find Used SMB Protocol Versions with Get-SMBConnection

When communicating over the SMB protocol, the client and server negotiate and use the highest dialect version supported by both sides. Use the PowerShell cmdlet to see which SMB protocol versions clients are using to connect to an SMB server:

Get-SMBConnection

How to find out what SMB dialect is in use using Get-SmbConnection cmdlet

The SMB version that is used to connect to the remote server (ServerName) is listed in the Dialect column.

To find out if SMB encryption (introduced in SMB 3.0) is being used, run the following command:

Get-SmbConnection | ft ServerName,ShareName,Dialect,Encrypted,UserName

In Linux, you can view a list of the SMB connections and protocols used by Samba:

$ sudo smbstatus

List the SMB dialects that active clients use to connect to the file server, along with the number of connections:

Get-SmbSession | Select-Object -ExpandProperty Dialect | Sort-Object -Unique

Get-SmbSession used Dialect versionsIn this example, 898 clients are connected to the file server via SMB 2.1 (Windows 7/Windows Server 2008 R2), and an additional 12 clients are connected via SMB 3.02.

You can use PowerShell to enable auditing of the SMB versions used for the connections:

Set-SmbServerConfiguration –AuditSmb1Access $true

SMB connection events can then be queried from the Event Viewer logs using PowerShell.

Get-WinEvent -LogName Microsoft-Windows-SMBServer/Audit

Why Is SMBv1 Disabled in Newer Windows Versions?

Due to serious security issues and critical vulnerabilities, SMB protocol version 1.0 is deprecated and disabled by default in modern versions of Windows (the WannaCrypt and Petya ransomware attacks are good examples of how vulnerabilities in the SMBv1 protocol can be exploited). The legacy SMB1 protocol has been replaced by the newer and more secure SMB2 and SMB3 protocols.

Starting with Windows 10 version 809, the SMB1 client and server services are disabled by default during clean operating system installations.

Check that SMB 1.0 is disabled using the command:

Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

SMB1Protocol disabled by default in Windows

Although the legacy SMB 1.0 protocol can still be enabled on Windows devices, it is not recommended for security reasons. Disabling SMB 1 may prevent Windows from accessing shared folders on legacy devices (old NAS versions, shared network printers, Windows XP/Server 2003 devices, old Linux versions, etc.) that don’t support the newer versions of the protocol.

Any clients running Windows XP or Windows Server 2003, as well as any other legacy devices that only support SMBv1, should be updated or isolated.

If there are no legacy devices left on your network that only support SMBv1, disable this protocol on all Windows computers.

How to Enable and Disable SMBv1, SMBv2, and SMBv3 on Windows

Let’s look at ways to enable and disable different SMB versions on Windows. We’ll cover SMB client and server management separately since they are different Windows components.

Windows 11, 10, 8.1, Windows Server 2025/2022/2019/2016/2012R2:

Disable SMBv1 client and server:

Disable-WindowsOptionalFeature -Online -FeatureName smb1protocol

Disable SMBv1 server only:

Set-SmbServerConfiguration -EnableSMB1Protocol $false

Enable SMBv1 client and server:

Enable-WindowsOptionalFeature -Online -FeatureName smb1protocol

If SMB1 isn’t used for over 15 days, the built-in SMB1Protocol-Deprecation feature automatically disables it in Windows.

Enable only SMBv1 server:

Set-SmbServerConfiguration -EnableSMB1Protocol $true

Learn more about how to enable or disable the SMBv1 protocol on Windows 10/110 and Windows Server.

Disable SMBv2 and SMBv3 server:

Set-SmbServerConfiguration -EnableSMB2Protocol $false

Enable SMBv2 and SMBv3 server:

Set-SmbServerConfiguration -EnableSMB2Protocol $true

Dsable smb2 using set-smbserverconfiguration cmdlet

Windows 7, Vista, and Windows Server 2008 R2/2008:

Disable SMBv1 server:

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 –Force

How to disable SMB 1 on Windows 7 via registry?

Enable SMBv1 server:

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 1 –Force

Disable SMBv1 client:

sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsi
sc.exe config mrxsmb10 start= disabled

Enable SMBv1 client:

sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb10 start= auto

Disable SMBv2 server:

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 0 -Force

Enable SMBv2 server:

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 1 –Force

To enable SMB1 in Windows Server 2012, you must also change the DependOnService registry value from SamSS Srv2 to SamSS Srv in HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer. In order to disable SMB1, you must revert the SamSS Srv2 value.

Disable SMBv2 client:

sc.exe config lanmanworkstation depend= bowser/mrxsmb10/nsi
sc.exe config mrxsmb20 start= disabled

Enable SMBv2 client:

sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb20 start= auto

Regardless of the Windows version, you can disable the SMBv1 server on all domain-joined computers by deploying the following registry parameter through the GPO:

  • Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
  • Name: SMB1
  • Type: REG_DWORD
  • Value: 0

Set the registry parameter SMB2=0 in order to disable the SMBv2 server.

To disable the SMBv1 client, deploy the following registry item:

  • Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\mrxsmb10
  • Name: Start
  • Type: REG_DWORD
  • Value: 4
When disabling SMB 1.0/CIFS File Sharing support on Windows, you may encounter the error 0x80070035 network path not found, errors when accessing shared SMB folders, and issues with network discovery. In this case, you must use the Discovery Service instead of the Computer Browser service (link).

How to Detect Which SMB Versions Are Enabled on Network Computers

Nmap can be used to scan the network and identify devices that are using the insecure SMBv1 protocol version. The following command will scan the specified IP subnet and display the SMB versions on the devices.

nmap -p445 --script smb-protocols 10.1.2.0/24 -Pn

nmap - scan network for smb versions (dialects)

The computers must have the network file and printer sharing service enabled, and the Windows Defender Firewall must allow traffic on TCP port 445.

In an Active Directory domain environment, this PowerShell script can be used to get information about the enabled SMB versions on computers:

$serverList = Get-ADComputer -Filter {(OperatingSystem -like "Windows Server*") -and (Enabled -eq $true)} | Select-Object -ExpandProperty Name
$results = @()
foreach ($server in $serverList) {
$serverStatus = Test-Connection -ComputerName $server -Count 1 -Quiet
if ($serverStatus) {
$smbStatus = Invoke-Command -ComputerName $server -ScriptBlock {
Get-SmbServerConfiguration | Select-Object EnableSMB1Protocol, EnableSMB2Protocol
}
$results += [PSCustomObject]@{
ServerName = $server
IsOnline = $true
SMBv1Enabled = $smbStatus.EnableSMB1Protocol
SMBv2Enabled = $smbStatus.EnableSMB2Protocol
}
}
else {
# If the server is unavailable:
$results += [PSCustomObject]@{
ServerName = $server
IsOnline = $false
SMBv1Enabled = $null
SMBv2Enabled = $null
}
}
}
$results | Format-Table -AutoSize
# Saving results to a CSV file
$results | Export-Csv -Path "C:\GetAD-SMB-Status.csv" -NoTypeInformation

powershell script to query smb versions on domain computers

In this example, we used the Get-ADComputer filter to scan only Windows Server hosts.
20 comments
12
Facebook Twitter Google + Pinterest
LinuxWindows 10Windows 11Windows Server 2022
previous post
Caching Domain Logon Credentials on Windows
next post
Using Windows Defender Antivirus on Windows Server

Related Reading

How to Repair Windows Boot Manager, BCD and...

March 11, 2024

Fix: The Computer Restarted Unexpectedly or Encountered an...

May 16, 2024

PowerShell: Get Folder Size on Windows

April 2, 2024

Network Computers are not Showing Up in Windows...

March 15, 2024

How to Download Offline Installer (APPX/MSIX) for Microsoft...

March 12, 2024

Windows Doesn’t Automatically Assign Drive Letters

March 15, 2024

How to Clean Up System Volume Information Folder...

March 17, 2024

Install and Manage Windows Updates with PowerShell (PSWindowsUpdate)

March 17, 2024

20 comments

Gilberto November 9, 2015 - 9:46 pm

your post save my day!!! thank u, i’m gonna reference it on my blog!!!

Reply
Alberto February 29, 2016 - 9:20 pm

I have looked everywhere on the web to resolve this issue.  THANK YOU!

Reply
Rune March 17, 2016 - 11:22 am

Thank you! Got this issue after patching and it worked fine.

Reply
ZAK May 12, 2016 - 3:27 pm

Thank you! Saved my day!

Reply
AS September 26, 2016 - 11:14 am

How come I have a windows server 2012 r2 with smb1 installed but not visible in dependencies and I can still access it from windows server 2003 ?

Reply
admin September 28, 2016 - 5:50 am

If SMB1 diver is running, you can access Windows 2012 R2 from 2003 client:

sc query mrxsmb10

E_NAME: mrxsmb10
  TYPE               : 2  FILE_SYSTEM_DRIVER
  STATE              : 4  RUNNING

Reply
Dji_Pih January 23, 2022 - 3:35 pm

You don’t need dependency with smb v1, so only v2 is enable in lan manager : this is more secure
`
echo Check SMB protocoles :
echo —————————————
echo.
for %%V in (1 2) do (
for /F %%L in (‘sc qc lanmanworkstation ^| find “mrxsmb%%V0″‘) do (
echo – Lan manager depends of SMB V%%V
for /F %%S in (‘sc query mrxsmb%%V0 ^| find /C “RUNNING”‘) do (
IF %%S EQU 1 (
echo OK, SMB V%%V service is running
) else (
echo.
echo ********************************************************************************************************
echo SMB V%%V is not running, script is ending
echo Type these commands as administrator :
echo.
echo C:^> sc qc lanmanworkstation ^(to show dependances, mrxsmb10 = SMB V1, mrxsmb20 = SMB V2^)
echo C:^> sc config lanmanworkstation depend= bowser/mrxsmb20/nsi ^(In order to disable SMB V1^)
echo C:^> sc config mrxsmb10 start= disabled
echo C:^> sc config mrxsmb20 start= auto ^(to start SMB V2 with system^)
echo Then restart computer
echo ********************************************************************************************************
goto END_SCRIPT
)
)
)
)
`

Reply
Davert March 28, 2018 - 3:38 pm

2012 onwards;
Check it’s not disabled via Powershell too:
To Check:
Get-SmbServerConfiguration | Select EnableSMB1Protocol,
If it say ‘False ‘then Ennable:
Set-SmbServerConfiguration -EnableSMB1Protocol $false

Reply
Max April 11, 2018 - 1:14 pm

Thank you for your comment. Indeed, SMB1 server protocol is available by default on Windows Server 2012 R2. I updated the article

Reply
Joe Janota September 21, 2018 - 6:51 pm

Perfect, just what the doctor ordered. Saved my life and time.

Reply
Manjit Singh May 9, 2019 - 11:45 pm

If you are disabling/removing the SMB1 protocol then you need to make the necessary changes in the registry by enabling the dependencies of SMB 2.0 in Windows Server 2012 R2 through the registry otherwise your shares will stop working. Go to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer and change the value of DependOnService parameter from SamSS Srv to SamSS Srv2. Need to restart the server after this change.

Reply
Panya Saenmuk December 6, 2019 - 10:28 am

Thanks

Reply
Federico S December 12, 2019 - 10:39 pm

Great articles, but you might want to include a reference to the following group policies:
– “Network security: LAN Manager authentication level” change to Send LM & NTLM responses
– “Network security: Minimum session security for NTLM SSP based (including secure RPC) servers “ – Disable Require 128-bit encryption option
– “Network security: Minimum session security for NTLM SSP based (including secure RPC) clients “ – Disable Require 128-bit encryption option

In my case crucial to make it work (win2012 r2)

Reply
Shlomi March 4, 2020 - 9:40 pm

You the best!! always your posts are rich and very clear to understand!!
Many thanks!!

Reply
marco mig July 24, 2020 - 10:01 pm

Thank you man !! very usefull and clear guide in Windows smb labirint.. your detailed instruction work !! i just connected an smb1 printer on 2012 r2.

Reply
How to configuration SMB3 and encryption – Savage Nomads April 29, 2022 - 6:04 pm

[…] How to Check, Enable or Disable SMB Protocol Versions on Windows? | Windows OS Hub (woshub.com) […]

Reply
Janet Einhorn December 7, 2022 - 2:38 pm

Your article says:
This command returned that the SMB1 protocol is disabled (EnableSMB1Protocol = True), and the SMB2 and SMB3 protocols are enabled (EnableSMB1Protocol = False).
But the value of EnableSMB1Protocol is actually *False* and the value of *EnableSMB2Protocol* is True
Unless I’m mistaken, your explanation is topsy-turvy

Reply
james April 18, 2023 - 4:02 pm

Great article. Howver, I get different results using diffrent commands. Perhaps I am misisng something

1. sc.exe query mrxsmb10
Error which means does not exist which indicates SMB is not running
2. Sc.exe query mrxsmb20 is running.
3. Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
I get no SMB keys and you state this means SMBv1 amd SMBc2 are enabled by default
4. Gwt-WindowsFeature *smb*
Shows SMB is not installed

5. Get-smbServerConfiguration | select enableSMBProtocol, EnableSMB2Protocl | ft -autosize
EnableSMB1Protocol = True

However,
DISM /online /get-feature /format:table find “SMB1Protocol” returns EnableSMB1Protocol =Disabled.

DISM is accurate.

I feel the most reliable command is the one you mention below:

Reply
karuna July 3, 2023 - 6:37 am

Hello can you guide me how to enable SMB3 on windows server 2019 please. (server-side)

Reply
dk July 17, 2023 - 6:00 am

Domain controllers 2012 R2 have SMB1 disabled by default.
To enable SMB 1.0 support in Windows Server 2012 R2, open the Registry Editor, go to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer and change the value of DependOnService from SamSS Srv2 to SamSS Srv.

Reply

Leave a Comment Cancel Reply

join us telegram channel https://t.me/woshub
Join WindowsHub Telegram channel to get the latest updates!

Recent Posts

  • How to Detect Which User Installed or Removed a Program on Windows

    June 23, 2025
  • Encrypt Any Client-Server App Traffic on Windows with Stunnel

    June 12, 2025
  • Failed to Open the Group Policy Object on a Computer

    June 2, 2025
  • Remote Desktop Printing with RD Easy Print Redirection

    June 2, 2025
  • Disable the Lock Screen Widgets in Windows 11

    May 26, 2025
  • Configuring Windows Protected Print Mode (WPP)

    May 19, 2025
  • Map a Network Drive over SSH (SSHFS) in Windows

    May 13, 2025
  • Configure NTP Time Source for Active Directory Domain

    May 6, 2025
  • Cannot Install Network Adapter Drivers on Windows Server

    April 29, 2025
  • Change BIOS from Legacy to UEFI without Reinstalling Windows

    April 21, 2025

Follow us

  • Facebook
  • Twitter
  • Telegram
Popular Posts
  • Installing an Open Source KMS Server (Vlmcsd) on Linux
  • How to Access VMFS Datastore from Linux, Windows, or ESXi
  • How to Configure MariaDB Master-Master/Slave Replication
  • Using iPerf to Test Network Speed and Bandwidth
  • KVM: How to Expand or Shrink a Virtual Machine Disk Size?
  • Moving WSL to Another Drive in Windows
  • Install Windows Subsystem for Linux (WSL 2) on Windows 10/11
Footer Logo

@2014 - 2024 - Windows OS Hub. All about operating systems for sysadmins


Back To Top