1

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

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

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

当用户连接到域时,该函数运行良好,但是当用户关闭wifi,或者拔掉网线使他离线时,该函数总是返回错误代码1311,这意味着“目前没有可用于服务登录请求的登录服务器”。

LogonUser 函数的第四个参数是要执行的登录操作的类型。文档说,如果此参数的值为“LOGON32_LOGON_INTERACTIVE”,则登录类型具有为断开连接的操作缓存登录信息的额外费用,那么在用户在现场的情况下,这不应该起作用吗?

在此先感谢您的帮助。

4

1 回答 1

0

我最终使用了安全支持提供程序接口 (SSPI) 作为本页中 LogonUser API 的替代方法:如何在 Microsoft 操作系统上验证用户凭据

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

于 2015-04-03T09:36:40.257 回答