如何确定Windows上已安装的网络驱动器的协议名称(SMB / CIFS,NFS)和版本?
使用WNetAddConnection2连接共享文件夹,安全要求需要使用SMBv3协议,如何实现?怎么确定连接使用的什么协议?看参数没有设置协议的地方?
WNetGetNetworkInformation函数可以返回网络协议信息吗,该如何如使用?
C#代码如何实现?
如何确定Windows上已安装的网络驱动器的协议名称(SMB / CIFS,NFS)和版本?
使用WNetAddConnection2连接共享文件夹,安全要求需要使用SMBv3协议,如何实现?怎么确定连接使用的什么协议?看参数没有设置协议的地方?
WNetGetNetworkInformation函数可以返回网络协议信息吗,该如何如使用?
C#代码如何实现?
1.打开“控制面板”->“程序和功能”,找到“Windows 功能”选项,展开“SMB 1.0/CIFS 文件共享支持”、“SMB 直接主机”和“SMB 1.0/CIFS 自动装载”等选项,查看是否已勾选,如果勾选则表示已安装相应协议版本。
2.打开“命令提示符”,输入“sc query rdr”,查看“TYPE”一栏中的值,如果为“FILE_SYSTEM_DRIVER”,则表示已安装“Redirected Drive Buffering SubSystem”(RDBSS)驱动,该驱动支持SMB协议。
3.打开“注册表编辑器”,找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters”键,查看“SMB1”和“SMB2”值,如果值为“1”,则表示已启用相应的SMB协议版本。关于使用WNetAddConnection2连接共享文件夹,安全要求需要使用SMBv3协议的问题,可以通过设置连接选项来实现。具体方法如下:
创建一个NETRESOURCE结构体,设置相应的参数,如远程共享文件夹路径、用户名和密码等。
创建一个CONNECTDLGSTRUCT结构体,设置相应的连接选项,如SMB版本为3.0、加密等级为AES128-CCM等。
调用WNetAddConnection2函数,将NETRESOURCE和CONNECTDLGSTRUCT结构体作为参数传入,即可建立使用SMBv3协议的共享文件夹连接。
4.关于如何确定连接使用的是什么协议,可以通过以下方法:
打开“命令提示符”,输入“net use”,查看已建立的连接列表,如果连接使用的是SMBv3协议,则在“类型”一栏中会显示“Microsoft Windows Network”。
打开“资源监视器”,找到“网络”选项卡,查看“协议”一栏中的值,如果为“SMB 3.X”,则表示连接使用的是SMBv3协议。如果为“NFS”,则表示连接使用的是NFS协议。
5.关于WNetGetNetworkInformation函数可以返回网络协议信息的问题,该函数可以返回与网络相关的信息,如计算机名、域名、网络连接状态等,但不能返回网络协议信息。如果需要获取网络协议信息,可以使用其他方法,如上述方法中的“命令提示符”和“资源监视器”。