有没有办法确定 Windows 上安装的网络驱动器所使用的协议名称(SMB/CIFS、NFS)和版本? (在 C# 中)
EDIT
使用 Rusted 的答案中的信息,我从网络上的 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 协议的版本号。有任何想法吗?
我想你需要Windows 网络 (WNet) API http://msdn.microsoft.com/en-us/library/windows/desktop/aa385406%28v=vs.85%29.aspx,来自 NetType 字段的值网络信息结构 http://msdn.microsoft.com/en-us/library/windows/desktop/aa385349%28v=vs.85%29.aspx由返回WNet获取网络信息 http://msdn.microsoft.com/en-us/library/windows/desktop/aa385461%28v=vs.85%29.aspx功能。
Here http://code.google.com/p/netcommander/是C#开源项目,检查文件WnetApi http://code.google.com/p/netcommander/source/browse/#svn/trunk/WnetApiWnet API 的 .NET 包装器的文件夹。
要获取映射驱动器的 UNC 路径,请使用 PathToUNC 方法this http://www.codeproject.com/script/Articles/ViewDownloads.aspx?aid=2939项目。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)