2

Windowsにマウントされたネットワークドライブに使用されているプロトコル名(SMB / CIFS、NFS)とバージョンを確認する方法はありますか?(C#で)

編集

Rustedの回答からの情報を使用して、ネットワーク上のWindows7コンピューターから次の情報を取得しました。

NETRESOURCE res = WinApiWNETwrapper.GetResourceInfo("\\Test-PC");

res.dwDisplayType = SERVER
res.dwScope       = 0
res.dwType        = ANY
res.dwUsage       = CONTAINER
res.lpComment     = ""
res.lpLocalName   = null
res.lpProvider    = "Microsoft Windows Network"
res.lpLocalName   = "\\Test-PC"

NETINFOSTRUCT netinfo = WinApiWNETwrapper.GetNetworkInfo("\\Test-PC");

netinfo.cbStructureSize   = 32
netinfo.dwCharacteristics = 0
netinfo.dwDrives          = -1
netinfo.dwHandle          = 1880621056
netinfo.dwPrinters        = -1
netinfo.dwProviderVersion = 1024
netinfo.dwStatus          = Running
netinfo.wNetType          = LANMAN

SERVER_TRANSPORT_INFO_1[] transports = WinApiNETwrapper.ServerTransportEnum_1("\\Test-PC");

transports[0].svti1_domain                 = "WORKGROUP"
transports[0].svti1_networkaddress         = "TEST-PC"
transports[0].svti1_numberofvcs            = 0
transports[0].svti1_transportaddress       = 73107336
transports[0].svti1_transportaddresslength = ...
transports[0].TransportAddress             = "TEST-PC"

transports[0].svti1_transportname          = "\\Device\\NetbiosSmb"
transports[1].svti1_transportname          = "\\Device\\NetBT_Tcpip_{F4C75115-...}"
transports[2].svti1_transportname          = "\\Device\\NetBT_Tcpip_{70BD9048-...}"

重要な部分は次のようです。

transports[0].svti1_transportname          = "\\Device\\NetbiosSmb"

しかし、SMBプロトコルのバージョン番号がどこにも見つかりません。何か案は?

4

1 に答える 1

2

WNetGetNetworkInformation関数によって返されるNETINFOSTRUCTのNetTypeフィールドからの値であるWindowsNetworking(WNet)APIが必要だと思います。

これがC#のオープンソースプロジェクトです。WnetAPIの.NETラッパーのWnetApiフォルダー内のファイルを確認しください

マップされたドライブのUNCパスを取得するには、このプロジェクトのPathToUNCメソッドを使用します。

于 2012-05-29T15:06:44.403 に答える