先日の「MS16-110 適用後 NAS などの共有フォルダーに接続できない問題」の記事の調べ物をしている際に見つけた Tips についてメモ代わりに投稿しておきます。
Windows でのファイル共有には SMB プロトコルが利用されていることは良く知られていますが、SMB は Windows 製品で長く使われ機能とセキュリティが強化されてきたため、SMBv1、SMBv2、SMBv3 といったバージョンやさらに細かなダイアレクト が存在しています。通常はサーバー – クライアント間で自動的にネゴシエーションが行われ適切なバージョン・ダイアレクトが利用されるため、こうした違いを意識する必要はないのですが、Windows 製品以外 (Linux 上の Samba や OS Ⅹ、NAS など) と接続する場合や、Windows 間でもトラブルシュートをする場合など、どのようなバージョン・ダイアレクトが利用されているのか確認したい場合があります。
そのような場合、クライアントで次のような方法で利用している SMB のバージョン・ダイアレクトを確認することができます。
クライアントで利用可能な SMB のバージョンを確認する
- コマンド プロンプトで以下を実行します
sc.exe qc lanmanworkstation - 結果がC:\>sc.exe qc lanmanworkstation
[SC] QueryServiceConfig SUCCESSSERVICE_NAME: lanmanworkstation
TYPE : 20 WIN32_SHARE_PROCESS
START_TYPE : 2 AUTO_START
ERROR_CONTROL : 1 NORMAL
BINARY_PATH_NAME : C:\WINDOWS\System32\svchost.exe -k NetworkService
LOAD_ORDER_GROUP : NetworkProvider
TAG : 0
DISPLAY_NAME : Workstation
DEPENDENCIES : Bowser
: MRxSmb20
: NSI
SERVICE_START_NAME : NT AUTHORITY\NetworkServiceのように表示されます。
- DEPENDENCIES 欄を確認します。
mrxsmb20 がある場合は SMBv2 (Windows 8/Windows Server 2012 以降は SMBv3 も) が有効です。
mrxsmb10 がある場合は SMBv1 が有効です。
SMB セッションで利用されている SMB のダイアレクトを確認する
実際に開いている SMB セッションでどのような SMB ダイアレクトが利用されているか確認するには、管理者として実行した PowerShell で以下を実行します。
Get-SmbConnection
開いている SMB セッションの利用しているダイアレクトや資格情報などの詳細情報が表示されます。
SMB セッションがないと何も表示されないので、利用ダイアレクトを調べたい相手 (サーバー) 上の共有を開いた状態で実行してください。簡単にはエクスプローラーで共有フォルダーを開いておけば OK です。
カテゴリー:Windows Tips
