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

LogonUser() not authenticating user for invalid domain when computer is not on a domain

本文关键字:无效 用户 身份验证 计算机 logonuser      更新时间:2023-10-16

我在c 中的logonuser()API函数有一些问题。我正在测试的计算机不在域上。我正在测试的帐户在计算机上存在,但是当我提供无效的域时,它会验证登录。

这对我来说似乎不正确。

HANDLE token;
if (!LogonUser("LocalUser", "InvalidDomain", "Password",
                LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, &token))
{
    unsigned long error = GetLastError();
}

这是正确的行为吗?

我相信工作组成员不支持域登录,以便忽略域参数。这解释了您所看到的。

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

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

根据本网站,您应该使用"。(或",但没有记录)作为仅使用本地数据库的域。我相信"的无证件行为解释了您的登录。如果它无法在域中识别用户,它将尝试在本地识别它。

i基于此页面上的答案:http://msdn.microsoft.com/en-us/library/windows/desktop/aa378184(v = vs.85).aspx