WNetAddConnection2返回1219

时间:2011-06-01 20:32:58

标签: .net networking drive-mapping wnet

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

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

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

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

我是否遗漏了某些内容,或者我是否需要以不同的方式使用NETRESOURCE结构或其他任何内容?

由于

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

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

答案 2 :(得分: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;
      }

////