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);
}
ドライブ マッピングを作成している場合は、すべてのネットワーク ドライブ マッピングを吹き飛ばすのではなく、どのドライブ文字を解放する必要があるかを本質的に知っているからです。