是否有Windows C++ API来验证Windows用户名/域名是本地计算机上的有效帐户(没有密码)?

是否有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)

+0

API NetUserGetInfo是否适用于本地计算机上的域用户?我发现它适用于本地机器用户。对于尝试访问服务器的域用户。 我试过了,它似乎不适合他们。即使“Net User”命令也只列出本地用户而不是域用户。 – Abagga