LogonUser返回ERROR_NO_LOGON_SERVERS

时间:2015-03-09 07:38:44

标签: c++ windows login dns winlogon

我有一个需要检查用户的Windows会话密码的应用程序。

为此,我使用Windows API中的LogonUser函数。用户可以连接到域。

result = LogonUserW(wUsername, wDomain, wPassword, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, pH);

当用户连接到域时,该功能运行良好,但是,当用户关闭wifi或拔掉lan-cable以使其脱机时,该功能始终返回错误代码1311,具有“目前没有可用于登录请求的登录服务器”的含义“。

LogonUser函数具有要执行的登录操作类型作为第四个参数。 The documentation表示如果此参数的值为“LOGON32_LOGON_INTERACTIVE”,则登录类型会为断开连接的操作缓存登录信息的额外费用,因此如果用户在该字段中,这不应该起作用吗? / p>

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我最终使用安全支持提供程序接口(SSPI),如本页中LogonUser API的替代方案所述:How to validate user credentials on Microsoft operating systems

使用代码段中提供的SSPLogonUser函数,我可以在连接到域时检查用户凭据,但也可以在域控制器无法访问时(在这种情况下,使用LogonUser失败) API)。