当我尝试将WNetAddConnection2调用到我已经在其中进行 session 的计算机上时,我遇到了一个问题。这是预期的,因为您只能使用一组凭据连接到网络资源。我正在尝试做的就是捕获这种情况,并自动调用WNetCancelConnection2断开所有现有连接,然后重试WNetAddConnection2调用。当我运行以下代码时,我会收到以下日志消息:

DEBUG - WNetAddConnection2 returned 1219
DEBUG - Multiple credentials detected, disconnecting all current sessions
DEBUG - WNetCancelConnection2 returned 0
DEBUG - WNetAddConnection2 returned 1219

如果在WNetCancelConnection中将dwFlags设置为CONNECT_UPDATE_PROFILE,则会收到以下日志消息:
DEBUG - WNetAddConnection2 returned 1219
DEBUG - Multiple credentials detected, disconnecting all current sessions
DEBUG - WNetCancelConnection2 returned 2250
DEBUG - WNetAddConnection2 returned 1219

这是我的消息来源,感谢所有帮助!
networkName = @"\\192.168.1.1";
var netResource = new NetResource()
{
    Scope = ResourceScope.GlobalNetwork,
    ResourceType = ResourceType.Disk,
    DisplayType = ResourceDisplaytype.Share,
    RemoteName = networkName
};

int result = WNetAddConnection2(netResource, credentials.Password, credentials.UserName, 0);

log.Debug("WNetAddConnection2 returned " + result);

if (result == 1219)
{
    log.Debug("Multiple credentials detected, disconnecting all current sessions");

    result = WNetCancelConnection2(networkName, 0, true);
    log.Debug("WNetCancelConnection2 returned " + result);

    result = WNetAddConnection2(netResource, credentials.Password, credentials.UserName, 0);
    log.Debug("WNetAddConnection2 returned " + result);
}

最佳答案

这个问题是否仍然存在或您已解决?
我遇到了同样的失败,因为我已经打开了要连接到的资源的连接。这些连接在启动时由Windows网络域的登录脚本自动打开。因此,我使用了“net use”来断开它们的连接(到目标计算机的所有连接)。之后,它运行良好。

这意味着这不是代码失败,而是Windows网络中的问题。
顺便说一句:无论如何,您都应该使用“net use”来查看代码是否成功,而不仅要相信调试消息。
这是错误代码的链接:http://msdn.microsoft.com/en-us/library/windows/desktop/ms681381%28v=vs.85%29.aspx

关于c# - WNetAddConnection2和错误1219-自动断开连接?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9085586/

10-17 00:39