使用WNetUseConnection连接到网络驱动器

时间:2018-04-10 14:18:46

标签: c# network-drive network-driver

我使用WNetUseConnection连接到网络驱动器,昨天一切正常,下面是我用来连接网络驱动器的代码。

NETRESOURCE nr = new NETRESOURCE();
nr.dwType = RESOURCETYPE_DISK;
nr.lpRemoteName = remote;
nr.lpLocalName = "L:";
int ret = WNetUseConnection(IntPtr.Zero, nr, username, password, 0, null, null, null);

我使用以下代码

找到远程的值
WNetGetConnection("L:", sb, ref size);          
var remote= sb.ToString();

我使用以下代码取消连接

WNetCancelConnection2("L:", 0, false); 

正如我之前提到的,昨天一切正常,但今天当我试图重新测试代码时失败了。 WNetGetConnection在某些情况下返回错误1201,在其他情况下返回1202(注意驱动器显示x符号,这意味着它已断开连接)

enter image description here

现在尝试使用WNetUseConnection重新连接到驱动器,并且有效凭据失败,错误1219这真的很奇怪,因为没有与驱动器建立的连接,同时尝试通过传递空用户名和密码连接到驱动器工作得很好。

使用WNetCancelConnection2取消连接工作并且连接成功取消但尝试再次执行WNetUseConnection以重新测试步骤会引发此错误67这是没有意义的,因为我的电脑仍在显示驱动器,但是当我尝试双击驱动器,它显示驱动器不存在的错误。

断开驱动器无法正常工作,但将驱动器重新映射到具有相同驱动器号的相同位置并更换网络驱动器。但重新映射并没有解决问题。

当我使用以下命令删除并重新创建驱动器时,一切正常。

  

净使用* / del / yes

     

net use l:" NetworkPath" /用户:"用户名" "密码"

谁能告诉我为什么会这样?我很感激帮助。

编辑:

现在问题开始显现,我无法使用代码连接到驱动器,但是当我双击计算机上的驱动器图标时,连接成功创建。命令不再解决问题。

PS:我使用的是Windows 10版本1709

1 个答案:

答案 0 :(得分:0)

使用该库一段时间后,我发现在连接和断开连接之间添加延迟可以防止出现此问题,并且在某些情况下,如果运行WNetUseConnection的用户网络连接已损坏,则错误将继续显示并覆盖其权限将解决这个问题。

不确定这是否是正确的解决方案,但至少这些是我使用并证明有效的解决方法。