我写了一个类,它允许我以编程方式映射和取消映射网络驱动器。 在我的情况下有两个文件夹,我映射到两个驱动器(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它已经被使用但是它显示无处?
答案 0 :(得分:0)
今天我开始时心情很好,并且认为我测试问题是否仍然存在,如果确实如此,我将删除所有驱动器并尝试进行故障排除。
令我惊讶的是我能够解决问题。如上所述,驱动器和共享未在任何位置列出,安装共享驱动器的命令失败,上面显示相同的消息,卸载失败并显示驱动器未被使用的消息等。重新启动并未改变任何情况
出于某种原因
net use / delete *
即使其他一切都失败,也会释放网络资源。
这么简单,几乎令人尴尬。我仍然不确定这是怎么发生的,为什么没有迹象表明正在使用驱动器/共享。