【问题标题】:Is there a Windows C++ API to validate Windows username/domain name is a valid account on the local machine (without the password)?是否有 Windows C++ API 来验证 Windows 用户名/域名是本地计算机上的有效帐户(没有密码)?
【发布时间】:2015-09-16 09:18:24
【问题描述】:

我正在尝试验证用户输入的给定用户名/域名是否是机器上的有效用户,即在给定机器上是否存在该用户的本地用户帐户。 (我不需要所有 Active Directory 用户。我只需要至少登录过机器一次的用户。)

LogonUser API 帮助我验证用户名/域名和密码组合,但如果我无权访问密码,它不会告诉我用户名/域名是否有效。

【问题讨论】:

    标签: c++ windows validation msdn user-accounts


    【解决方案1】:
    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”命令也只列出本地用户而不是域用户。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多