【发布时间】:2016-10-27 17:03:05
【问题描述】:
当我尝试将 WNetAddConnection2 调用到我已经有会话的机器时遇到了问题。这是意料之中的,因为您只能使用一组凭据连接到网络资源。我要做的是捕捉这种情况并自动调用 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);
}
【问题讨论】: