Windows VC++ 中的身份验证

Windows authentication in VC++

我正在尝试找到一个简单的解决方案来验证 Windows 中的用户。我想用MFC框架来实现。

我用谷歌搜索了一下,发现我需要使用以下 Win32 API 函数:

LogonUser(L"LocalServer", L"NT AUTHORITY", NULL, LOGON32_LOGON_SERVICE, LOGON32_PROVIDER_DEFAULT, &hToken)

但我不知道如何让它发挥作用。根据 MSDN 文档,它 returns 失败时为零。

此外,在搜索此内容时,我遇到了术语 Impersonation。如果有人能解释一下就太好了。

有人可以指出一篇很好的文章或资源来解释这个主题。也很高兴看到一个工作示例。

提前致谢。

以下是在 Windows 中检查用户安全凭证的方法:

BOOL Logon(const CString& sLogin, const CString& sPassword)
{
    HANDLE hToken = INVALID_HANDLE_VALUE;

    CString sDomain;
    CString sUser;
    int nPos = sLogin.Find(_T("\"));
    if (nPos != -1)
    {
        sDomain = sLogin.Mid(0, nPos);
        sUser = sLogin.Mid(nPos + 1, sLogin.GetLength() - nPos - 1);
    }

    if (!sDomain.IsEmpty())
    {
        if(!::LogonUser(sUser, sDomain, sPassword, LOGON32_LOGON_NEW_CREDENTIALS, LOGON32_PROVIDER_DEFAULT, &hToken))
            return FALSE;
    }
    else
    {
        if (!::LogonUser(sLogin, _T("."), sPassword, LOGON32_LOGON_NEW_CREDENTIALS, LOGON32_PROVIDER_DEFAULT, &hToken))
            return FALSE;
    }

    if(!::ImpersonateLoggedOnUser(hToken))
        return FALSE;

    return TRUE;
}