如何在 Windows 和 Windows Server 中偵測、啟用及停用 SMBv1、SMBv2 和 SMBv3

適用於: Windows 10 Pro released in July 2015Windows Vista 商用進階版Windows Vista 商用入門版 更多

摘要


本文說明如何啟用及停用「伺服器訊息區」(SMB) 用戶端與伺服器元件上的 SMB 版本 1 (SMBv1)、SMB 版本 2 (SMBv2) 和 SMB 版本 3 (SMBv3)。 
 

在 Windows 7 和 Windows Server 2008 R2 中,停用 SMBv2 將會「停用」(Deactivate) 下列功能:
  • 要求複合 – 允許將多個 SMB 2 要求當做單一網路要求傳送
  • 更多讀取和寫入 - 較適用於速度更快的網路
  • 資料夾和檔案內容的快取 – 用戶端會保留資料夾和檔案的本機複本
  • 耐久控制代碼 - 允許出現暫時中斷連線的情況時明確地重新連線至伺服器
  • 改良的訊息簽署 - HMAC SHA-256 會取代 MD5 做為雜湊演算法
  • 改良的延展性以供檔案共用 - 每部伺服器的使用者、共用及開啟檔案的數目都大幅增加
  • 對符號連結的支援
  • 用戶端 Oplock Leasing 模型 - 限制用戶端和伺服器之間傳輸的資料,以改善高延遲網路的效能並提升 SMB 伺服器延展性
  • 大型 MTU 支援 – 可以完整使用 10 GB 乙太網路
  • 改良的電源效率 – 已對伺服器開啟檔案的用戶端可以進入睡眠狀態
在 Windows 8、Windows 8.1、Windows 10、Windows Server 2012 和 Windows Server 2016 中,停用 SMBv3 將會停用下列功能 (以及上面清單所述的 SMBv2 功能):
  • 明確容錯移轉 – 用戶端可以在維護或容錯移轉期間,不中斷地重新連接至叢集節點
  • 向外延展 – 同時存取所有檔案叢集節點上的共用資料 
  • 多重通道 – 網路頻寬和容錯的彙總 (若用戶端和伺服器之間有多個路徑可用)
  • SMB 直接傳輸 - 新增 RDMA 網路支援,以達極高效能、低延遲及低 CPU 使用率
  • 加密 – 提供端對端加密,以免在不可信任的網路上遭到竊聽
  • 目錄租用 – 透過快取,改善分公司的應用程式回應時間
  • 效能最佳化 – 針對小型隨機讀取/寫入 I/O 進行最佳化

其他相關資訊


SMBv2 通訊協定是在 Windows Vista 和 Windows Server 2008 中引進。

SMBv3 通訊協定是在 Windows 8 和 Windows Server 2012 中引進。

如需有關 SMBv2 和 SMBv3 功能的詳細資訊,請前往下列 Microsoft TechNet 網站:
 

如何在 Windows 8.1、Windows 10、Windows 2012 R2 和 Windows Server 2016 中適當地移除 SMB v1


Windows Server 2012 R2 與 2016: PowerShell 方法

SMB v1

偵測:

Get-WindowsFeature FS-SMB1

停用:

Disable-WindowsOptionalFeature -Online -FeatureName smb1protocol

啟用:

Enable-WindowsOptionalFeature -Online -FeatureName smb1protocol


SMB v2/v3

偵測:

Get-SmbServerConfiguration | 選取 EnableSMB2Protocol

停用:

Set-SmbServerConfiguration -EnableSMB2Protocol $false

啟用:

Set-SmbServerConfiguration -EnableSMB2Protocol $true



Windows Server 2012 R2 和 Windows Server 2016: 停用 SMB 的伺服器管理員方法

SMB v1
Server Manager - Dashboard method



Windows 8.1 和 Windows 10: PowerShell 方法

SMB v1 通訊協定



Windows 8.1 和 Windows 10: 新增或移除程式方法

Add-Remove Programs client method
 
 

如何偵測、啟用和停用 SMB 伺服器上的 SMB 通訊協定


Windows 8 和 Windows Server 2012

Windows 8 和 Windows Server 2012 引進全新的 Set-SMBServerConfiguration Windows PowerShell Cmdlet。 這個 Cmdlet 可讓您啟用或停用伺服器元件上的 SMBv1、SMBv2 和 SMBv3 通訊協定。 


執行 Set-SMBServerConfiguration Cmdlet 之後,您不必重新啟動電腦。

SMB 伺服器上的 SMB v1
偵測: Get-SmbServerConfiguration | 選取 EnableSMB1Protocol
停用: Set-SmbServerConfiguration -EnableSMB1Protocol $false
啟用: Set-SmbServerConfiguration -EnableSMB1Protocol $true

如需詳細資訊,請參閱位於 Microsoft 的伺服器存放裝置 (英文)

SMB 伺服器上的 SMB v2/v3
偵測: Get-SmbServerConfiguration | 選取 EnableSMB2Protocol
停用: Set-SmbServerConfiguration -EnableSMB2Protocol $false
啟用: Set-SmbServerConfiguration -EnableSMB2Protocol $true


Windows 7、Windows Server 2008 R2、Windows Vista 和 Windows Server 2008

若要在執行 Windows 7、Windows Server 2008 R2、Windows Vista 或 Windows Server 2008 的 SMB 伺服器上啟用或停用 SMB 通訊協定,請使用 Windows PowerShell 或「登錄編輯程式」。

PowerShell 方法


SMB 伺服器上的 SMB v1

偵測:

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

預設設定 = 已啟用 (不會建立任何登錄機碼),因此,不會傳回任何 SMB1 值

停用:

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

啟用:

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


注意 套用這些變更之後,您必須重新啟動電腦。

如需詳細資訊,請參閱位於 Microsoft 的伺服器存放裝置 (英文)

SMB 伺服器上的 SMB v2/v3

偵測:

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


停用:

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


啟用:

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


注意 套用這些變更之後,您必須重新啟動電腦。


登錄編輯程式

重要 本文包含如何修改登錄的相關資訊。 修改登錄之前,請務必先備份, 並了解如何在發生問題時還原登錄。 如需有關如何備份、還原和修改登錄的詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
322756 如何在 Windows 中備份及還原登錄

若要啟用或停用 SMB 伺服器上的 SMBv1,請設定下列登錄機碼:

登錄子機碼: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
登錄項目: SMB1
REG_DWORD: 0 = 已停用
REG_DWORD: 1 = 已啟用
預設值: 1 = 已啟用 (不會建立任何登錄機碼)

若要啟用或停用 SMB 伺服器上的 SMBv2,請設定下列登錄機碼:

登錄子機碼:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
登錄項目: SMB2
REG_DWORD: 0 = 已停用
REG_DWORD: 1 = 已啟用
預設值: 1 = 已啟用(不會建立任何登錄機碼)


注意 套用這些變更之後,您必須重新啟動電腦。

如何偵測、啟用和停用 SMB 用戶端上的 SMB 通訊協定


Windows Vista、Windows Server 2008、Windows 7、Windows Server 2008 R2、Windows 8 和 Windows Server 2012

注意 當您在 Windows 8 或 Windows Server 2012 中啟用或停用 SMBv2 時,SMBv3 也會跟著啟用或停用。 之所以出現這個行為,是因為這些通訊協定共用相同的堆疊。

SMB 用戶端上的 SMB v1
偵測: sc.exe qc lanmanworkstation
停用: sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsi
sc.exe config mrxsmb10 start= disabled
啟用: sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb10 start= auto


如需詳細資訊,請參閱位於 Microsoft 的伺服器存放裝置 (英文)

SMB 用戶端上的 SMB v2/v3
偵測: sc.exe qc lanmanworkstation
停用: sc.exe config lanmanworkstation depend= bowser/mrxsmb10/nsi
sc.exe config mrxsmb20 start= disabled
啟用: sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb20 start= auto


注意事項

  • 您必須在提升權限的命令提示字元中執行這些命令。
  • 套用這些變更之後,您必須重新啟動電腦。

使用群組原則停用 SMBv1 伺服器


這個操作會在登錄中設定下列新項目:


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

登錄項目: SMB1 REG_DWORD: 0 = 已停用


若要使用 [群組原則] 進行設定:

  1. 開啟 [群組原則管理主控台]。 以滑鼠右鍵按一下應包含新喜好設定項目的群組原則物件 (GPO),然後按一下 [編輯]
  2. [電腦設定] 主控台樹狀目錄中,展開 [喜好設定] 資料夾,然後展開 [Windows 設定] 資料夾。
  3. 以滑鼠右鍵按一下 [登錄] 節點,指向 [新增] 並選取 [登錄項目]

    登錄新的登錄項目

[新登錄內容] 對話方塊中選取下列項目:

  • 動作: 建立
  • 登錄區: HKEY_LOCAL_MACHINE
  • 機碼路徑: SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
  • 數值名稱: SMB1
  • 數值類型: REG_DWORD
  • 數值資料: 0

新的登錄內容-一般

這個操作會停用 SMBv1 伺服器元件。 您必須將這個群組原則套用到網域中所有必要的工作站、伺服器和網域控制站。

注意:WMI 篩選器也可以設定為排除不支援的作業系統或選取的排除項目,例如 Windows XP。 

使用群組原則停用 SMBv1 用戶端


若要停用 SMBv1 用戶端,您必須更新服務登錄機碼,以停用 MRxSMB10 的啟動,並且從 LanmanWorkstation 的項目移除 MRxSMB10 的相依性,以便在不需要先啟動 MRxSMB10 的情況下正常地啟動。

這個操作會更新並取代下列 2 個登錄項目的預設值:


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\mrxsmb10

登錄項目: Start REG_DWORD: 4 = 已停用

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation

登錄項目: DependOnService REG_MULTI_SZ: [Bowser]、[MRxSmb20]、[NSI]


注意:預設值包含現在當做相依性而移除的 MRxSMB10


若要使用「群組原則」進行設定:

  1. 開啟 [群組原則管理主控台]。 以滑鼠右鍵按一下應包含新喜好設定項目的群組原則物件 (GPO),然後按一下 [編輯]
  2. [電腦設定] 主控台樹狀目錄中,展開 [喜好設定] 資料夾,然後展開 [Windows 設定] 資料夾。
  3. 以滑鼠右鍵按一下 [登錄] 節點,指向 [新增] 並選取 [登錄項目]

登錄新的登錄項目

[新登錄內容] 對話方塊中選取下列項目:

  • 動作: 更新
  • 登錄區: HKEY_LOCAL_MACHINE
  • 機碼路徑: SYSTEM\CurrentControlSet\services\mrxsmb10
  • 數值名稱: Start
  • 數值類型: REG_DWORD
  • 數值資料: 4

開始內容-一般

接著,移除剛停用的 MRxSMB10 的相依性

[新登錄內容] 對話方塊中選取下列項目:

  • 動作: 取代
  • 登錄區: HKEY_LOCAL_MACHINE
  • 機碼路徑: SYSTEM\CurrentControlSet\Services\LanmanWorkstation
  • 數值名稱: DependOnService
  • 數值類型:REG_MULTI_SZ
  • 數值資料:
    • Bowser
    • MRxSmb20
    • NSI

注意:這三個字串將不會有項目符號(請參閱下列螢幕擷取畫面)。

DependOnService 屬性

在許多 Windows 版本中,預設值會包含 MRxSMB10,因此,使用這個多重值字串來取代預設值,將會移除 LanmanServerMRxSMB10 相依性,並使 4 個預設值減為上述 3 個值。

注意:當您使用 [群組原則管理主控台] 時,您不需要使用引號或逗號。 只要每行輸入一個項目即可。

需要重新啟動

套用原則且登錄設定就緒之後,目標系統必須重新啟動,SMB v1 才會停用。

摘要

如果所有設定都在相同的群組原則物件 (GPO) 中,[群組原則管理] 將會顯示如下設定。

群組原則管理編輯器登錄

測試和驗證

一旦設定完成,即可允許原則進行複寫和更新。 基於測試的必要性,請在命令提示字元中執行 gpupdate /force,然後檢閱目標電腦,以確保正確套用登錄設定。 請確認環境中所有其他系統的 SMB v2 和 SMB v3 都正常運作。