6

我正在使用 WNetAddConnection2 和 WNetCancelConnection2 映射或取消映射驱动器。

我正在尝试做的事情如下:
我在服务器(例如:myserver)上映射了一个文件夹(例如:Folder1)。所以路径是\\myserver\Folder1,我将它映射到驱动器X。
现在我想在同一个myserver上映射另一个文件夹(例如:Folder2)以编程方式驱动Y。

当我在映射一个文件夹后调用 WNetAddConnection2 方法时,它返回 1219 而不是 0,并且我收到错误:不允许同一用户使用多个用户名与服务器或共享资源建立多个连接。断开与服务器或共享资源的所有先前连接,然后重试。

我很困惑,因为我可以通过右键单击 MyComputer 并选择映射网络驱动器来将 Folder2 映射到同一台服务器上...,但不是以编程方式。

我是否遗漏了什么,或者我需要以不同的方式使用 NETRESOURCE 结构或其他任何东西?

谢谢

4

3 回答 3

4

您是否也在以编程方式映射 X:?如果是这样,您在调用 WNetAddConnection2() 时是否使用相同的用户名和密码规范?1219 错误表明您正在尝试使用不同的身份验证将多个驱动器映射到同一服务器。使用相同的用户/密码组合时,我已成功地将多个 WNetAddConnection2() 设置为同一服务器上的多个共享。

于 2011-06-02T20:43:30.317 回答
4

万一其他人有这个问题,我碰巧在资源管理器窗口中打开了有问题的文件共享而没有意识到这一点。我关闭了窗口,然后代码工作正常。

于 2016-09-20T17:42:23.887 回答
0

回复很晚,但希望能有所帮助。我的做法是在 C# 中调用 net delete 命令。

////

string strParam = @"/c net use * /delete /Y";
string strOutput = MappedDriveResolver.DoProcess("cmd", strParam);

public static string DoProcess(string cmd, string argv)
  {
      Process p = new Process();
      p.StartInfo.UseShellExecute = false;
      p.StartInfo.RedirectStandardOutput = true;
      p.StartInfo.FileName = cmd;
      p.StartInfo.Arguments = argv;
      p.StartInfo.CreateNoWindow = true;
      p.Start();
      p.WaitForExit();
      string output = p.StandardOutput.ReadToEnd();
      p.Dispose();
      return output;
      }

////

于 2021-08-02T08:00:19.137 回答