2
有沒有方法可以確定在Windows上用於裝入網絡驅動器的協議名稱(SMB/CIFS,NFS)和版本? (在C#)確定網絡驅動器的協議
編輯
從生鏽的答案使用的信息,我接到了一個窗口網絡7計算機上的以下信息。
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協議的版本號。有任何想法嗎?
這是很大的幫助!看着提到的C#項目的來源,我設法得到關於網絡計算機的一些信息。但我仍然沒有協議版本。我相應地更新了這個問題。 – Dennis
我認爲你的結果中的netinfo.wNetType = LANMAN意味着SMB協議,因爲C#包裝中的枚舉名是從舊版本的Winnettwk.h中獲取的。我檢查了C:\ Program Files文件(x86)\ Microsoft SDK \ Windows \ v7.0A \ Include \ wnnc.h - 它包含一個具有相同值的新名稱:#define WNNC_NET_SMB 0x00020000 – Rusted