我有一个需要检查用户的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>
提前感谢您的帮助。
答案 0 :(得分:0)
我最终使用安全支持提供程序接口(SSPI),如本页中LogonUser API的替代方案所述:How to validate user credentials on Microsoft operating systems
使用代码段中提供的SSPLogonUser函数,我可以在连接到域时检查用户凭据,但也可以在域控制器无法访问时(在这种情况下,使用LogonUser失败) API)。