只需使用 Process.Start
System.Diagnostics.Process.Start("CMD.exe","/c net use * /delete");
如果您坚持使用托管代码方法(为什么?),您可以执行以下操作:
foreach(var letter in "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
{
try {
network.RemoveNetworkDrive(letter + ":");
} catch {}
}
或者更好(取决于您对所需行为的灵活程度),而是对此进行迭代:
// assumes using System.IO
var networkDrives = DriveInfo.GetDrives().Where(x => x.DriveType == DriveType.Network))
foreach(var networkDrive in networkDrives)
我仍然会选择使用Process.Start
更清洁和更可靠的方式。一旦您开始重新实现“琐碎”功能的道路,您通常会很快发现它实际上是多么的不平凡。
进一步说明为什么您的问题本身可能需要重新考虑 - 为什么您仍然坚持要删除所有网络驱动器映射?如果您正在映射 Z:例如,您知道需要取消映射的驱动器。你可以有这样的东西:
public void MapDrive(char driveLetter, string networkPath, string userName, string password)
{
try { network.RemoveNetworkDrive(driveLetter + ":"); } catch {}
network.MapNetworkDrive(driveLetter + ":", @shared_path, Type.Missing, username, password);
}
因为如果您正在创建驱动器映射,那么您肯定知道哪些驱动器号需要空闲,而不是吹走所有网络驱动器映射。