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

Can't map or unmap drive because windows thinks it's in use?

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

我得到的例外是

Multiple connections to a server or shared resource by the same user, using more than one user name, are not allowed. Disconnect all previous connections to the server or shared resource and try again

我在命令行中查看了

  net use

这导致

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

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

我使用 aejw 的网络 class 作为起点,可以在这里找到: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 它已被使用但无处显示?

今天我以全新的心态开始,我想我测试一下问题是否仍然存在,如果仍然存在,我将删除所有驱动器并尝试进行故障排除。

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

出于某种原因

net use /delete *

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

简单到几乎让人尴尬。我仍然不确定这是怎么发生的,以及为什么没有迹象表明正在使用 drive/share。