登录用户 returns ERROR_NO_LOGON_SERVERS

LogonUser returns ERROR_NO_LOGON_SERVERS

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

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

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

当用户连接到域时,该功能运行良好,但是,当用户关闭wifi,或拔掉网线使其处于离线状态时,该功能总是returns错误代码 1311,其含义为 "There are currrently no logon servers available to service the logon request"。

LogonUser 函数的第四个参数是要执行的登录操作类型。 The documentation 表示如果此参数的值为 "LOGON32_LOGON_INTERACTIVE",则登录类型会为断开连接的操作缓存登录信息的额外开销,所以这在用户在现场的情况下不应该起作用?

在此先感谢您的帮助。

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

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