是否有Windows C++ API来验证Windows用户名/域名是本地计算机上的有效帐户(没有密码)?
问题描述:
我想验证用户输入的用户名/域名是否是机器上的有效用户,即如果给定机器上存在该用户的本地用户帐户。 (我不需要所有的Active Directory用户,我只是希望至少有一次登录过机器的用户)。是否有Windows C++ API来验证Windows用户名/域名是本地计算机上的有效帐户(没有密码)?
LogonUser API帮助我验证用户名/域名和密码组合,但它不告诉我如果我无权访问密码,则用户名/域名有效。
答
BOOL IsValidUser(LPCWSTR username)
{
LPUSER_INFO_0 info = NULL;
NET_API_STATUS result = NetUserGetInfo(NULL, username, 0, reinterpret_cast<LPBYTE>(&info));
NetApiBufferFree(info);
return result == NERR_Success;
}
虽然,请注意,如果此函数返回false,这并不意味着用户名无效。可能有其他原因NetUserGetInfo不成功。
(非常难看的API)
API NetUserGetInfo是否适用于本地计算机上的域用户?我发现它适用于本地机器用户。对于尝试访问服务器的域用户。 我试过了,它似乎不适合他们。即使“Net User”命令也只列出本地用户而不是域用户。 – Abagga