无法映射或取消映射驱动器,因为Windows认为它正在使用中?

时间:2015-01-08 04:52:11

标签: c# .net windows networking network-drive

我写了一个类,它允许我以编程方式映射和取消映射网络驱动器。 在我的情况下有两个文件夹,我映射到两个驱动器(Y:和Z :) 它工作正常,但发生了一些事情,我无法映射或取消映射Y:驱动器了。

我得到的例外是

  

不允许同一用户使用多个用户名与服务器或共享资源建立多个连接。断开与服务器或共享资源的所有先前连接,然后重试

我在命令行中查看了

  net use

导致

 Status       Local     Remote                    Network
 ---------------------------------------------------------------------------
 OK           U:        \\ramsay\Users            Microsoft Windows Network
 OK           Z:        \\imperial\EzyCSV         Microsoft Windows Network

我甚至尝试通过命令行映射/取消映射驱动器,但没有成功,我收到相同的错误消息。

我用作起点aejw的网络类,可以在这里找到:http://www.codeproject.com/Articles/6847/Map-Network-Drive-API

这是我用来映射/取消映射的代码:

   public static void Map(string address, string drive)
   {
       NetworkDrive nd = new NetworkDrive
       {
           Persistent = true,
           Force = true,
           PromptForCredentials = false,
           SaveCredentials = true,
           ShareName = address,
           LocalDrive = drive
       };
       try
       {
           nd.MapDrive(@"domain\username", "password");
       }
       catch (Exception err)
       {
           MessageBox.Show("Cannot map drive!\nError: " + err.Message);
       }

   }

   public static void Unmap( string drive)
   {
       NetworkDrive nd = new NetworkDrive
       {
           Force = true,
           LocalDrive = drive
       };
       try
       {
           nd.UnMapDrive();
       }
       catch (Exception err)
       {
           MessageBox.Show("Cannot unmap drive!\nError: " + err.Message);
       }
   }

奇怪的是,相同的代码适用于取消映射和映射Z驱动器与该路径,但不是更多的Y:

有没有其他方法可以强制断开Y:或某种缓存和锁定文件告诉Windows它已经被使用但是它显示无处?

1 个答案:

答案 0 :(得分:0)

今天我开始时心情很好,并且认为我测试问题是否仍然存在,如果确实如此,我将删除所有驱动器并尝试进行故障排除。

令我惊讶的是我能够解决问题。如上所述,驱动器和共享未在任何位置列出,安装共享驱动器的命令失败,上面显示相同的消息,卸载失败并显示驱动器未被使用的消息等。重新启动并未改变任何情况

出于某种原因

  

net use / delete *

即使其他一切都失败,也会释放网络资源。

这么简单,几乎令人尴尬。我仍然不确定这是怎么发生的,为什么没有迹象表明正在使用驱动器/共享。