【问题标题】:"net use * /delete" equivalent in C#?C# 中的“net use * /delete”等价物?
【发布时间】:2013-07-11 22:43:06
【问题描述】:

我正在使用以下几行来创建与共享网络位置的连接,但问题在于任何连接都处于活动状态(我认为),network.MapNetworkDrive("..") 会抛出错误:

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

我通过在命令行中使用net use * /delete 传递了这个错误,但是在 C# 中是否有等效的命令?

IWshNetwork_Class network = new IWshNetwork_Class();
network.MapNetworkDrive("z:", @shared_path, Type.Missing, "Admin", "!QAZxsw2");


...

network.RemoveNetworkDrive("z:");          

【问题讨论】:

  • network.RemoveNetworkDrive("z:") 不是为你做的吗?
  • 先检查 z 是否存在,或者先删除它,如果删除不存在的映射不会引发错误。当然,它存在的事实可能意味着用户使用该字母拥有自己的映射,而您将其清除会极大地激怒他们...

标签: c# networking net-use


【解决方案1】:

只需使用 System.Diagnostics.Process.Start("CMD.exe","/c net use * /delete /y");

【讨论】:

    【解决方案2】:

    只需使用 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);
    }
    

    因为如果您正在创建驱动器映射,您肯定知道哪些驱动器号需要空闲,而不是清除所有网络驱动器映射。

    【讨论】:

    • 当然,但肯定有一个 C# 等价物。当有本地替代方案可用时,没有人会进入 DOS 并运行命令行实用程序。
    • 这是您将获得的“原生”替代方案。如果您的意思是您想要一个托管代码替代方案,是的,它肯定可以完成,但是不只是使用命令行进程的驱动程序是什么?
    • CMD.exe 没有Process.Start() 另一个程序来执行此功能。只是说。
    猜你喜欢
    • 2012-11-28
    • 2022-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-27
    • 1970-01-01
    • 2010-10-31
    相关资源
    最近更新 更多