我在使用C ++中的LogonUser()API函数时遇到了一些问题。我正在测试它的计算机不在域上。我正在测试的帐户存在于计算机上,但是当我提供无效域时,它会对登录进行身份验证。
这对我来说似乎不对。
HANDLE token;
if (!LogonUser("LocalUser", "InvalidDomain", "Password",
LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, &token))
{
unsigned long error = GetLastError();
}
这是正确的行为吗?
答案 0 :(得分:6)
我认为工作组成员不支持域登录,因此会忽略domain参数。这解释了你所看到的。
您可以确认这一点。尝试使用真实域用户进行身份验证(确保没有具有相同名称的本地帐户)。登录失败。
有一个例外。如果使用LOGON32_LOGON_NEW_CREDENTIALS
标志(修改现有登录而不是创建新登录),则域登录将始终成功,因为在您尝试访问远程资源之前,它不会进行身份验证。
答案 1 :(得分:1)
根据此网站,您应该使用“。” (或“”,但未记录)作为域仅使用本地数据库。 我相信“”的无证行为解释了您的登录信息。如果它无法识别域中的用户,它将尝试在本地识别它。
我的答案基于此页:http://msdn.microsoft.com/en-us/library/windows/desktop/aa378184(v=vs.85).aspx