有没有一种方法可以确定Windows上安装的networking驱动器使用的协议名称(SMB / CIFS,NFS)和版本? (在C#中)
编辑
使用来自Rusted的答案的信息,我从networking上的Windows 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协议的版本号。 有任何想法吗?
我想你需要WindowsNetwork(WNet)API ,由WNetGetNetworkInformation函数返回的NETINFOSTRUCT中 NetType字段的一个值。
这里是C#中的开源项目,检查WnetApi文件夹中的WnetApi文件夹。
要获取映射驱动器的UNC路径,请使用此项目中的PathToUNC方法。