对于错误的密码,LogonUser返回true

Dee*_*pak 4 c++ impersonation winapi login

bool bRet=LogonUser(strUserName, L"", strPassword, LOGON32_LOGON_TYPE_NEW_CREDENTIALS, LOGON32_PROVIDER_WINNT50, &phToken)     
Run Code Online (Sandbox Code Playgroud)

即使我在没有域名时输入了错误的密码,bRet也总是返回true.是否有任何解决方法,如果我输入有效密码,它会返回true,如果没有域,则返回错误密码.

Dav*_*nan 7

我认为LOGON32_LOGON_TYPE_NEW_CREDENTIALS你实际上是指LOGON32_LOGON_NEW_CREDENTIALS.在这种情况下,行为完全符合预期.该标志的文档说:

此登录类型允许调用者克隆其当前令牌并为出站连接指定新凭据.新登录会话具有相同的本地标识符,但对其他网络连接使用不同的凭据.

对于本地连接,返回的令牌是当前令牌的克隆.您提供的凭据仅用于出站连接.当您尝试此类连接时,将在该点检查凭据,然后您可能会遇到故障.