当计算机不在域上时,LogonUser()不对无效域的用户进行身份验证

wil*_*oup 6 c++ testing winapi login

我在使用C++中的LogonUser()API函数时遇到了一些问题.我正在测试它的计算机不在域上.我正在测试的帐户存在于计算机上,但是当我提供无效域时,它会对登录进行身份验证.

这对我来说似乎不对.

HANDLE token;

if (!LogonUser("LocalUser", "InvalidDomain", "Password",
                LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, &token))
{
    unsigned long error = GetLastError();
}
Run Code Online (Sandbox Code Playgroud)

这是正确的行为吗?

arx*_*arx 6

我相信工作组成员不支持域登录,因此将忽略domain参数.这解释了你所看到的.

你可以确认一下.尝试使用真实域用户进行身份验证(确保没有具有相同名称的本地帐户).登录失败.

有一个例外.如果使用LOGON32_LOGON_NEW_CREDENTIALS标志(修改现有登录而不是创建新登录),则域登录将始终成功,因为在您尝试访问远程资源之前,它不会进行身份验证.