【问题标题】:C++ - How do I manage other user in Credential Provider V1 (Vista-Win7)C++ - 如何在 Credential Provider V1 (Vista-Win7) 中管理其他用户
【发布时间】:2020-10-16 02:46:40
【问题描述】:

我为 Windows 10 的凭据提供程序 V2 开发了一个代码。我通过凭据提供程序的 V2 管理本地用户和活动目录用户以及 Windows 10 中的其他用户磁贴。

现在我开发了另一个用于 Windows 7 的代码。我使用 V1 凭据提供程序。我为显示本地用户定制了它。按照 _EnumerateOneCredential() 中的代码:

HRESULT CProvider::_EnumerateCredentials()
{
    PNET_DISPLAY_USER pBuff, p;
    DWORD i = 0, res, dwRec, index = 0;
    
    do
    {
        res = NetQueryDisplayInformation(NULL, 1, i, 100, MAX_PREFERRED_LENGTH, &dwRec, (PVOID*)&pBuff);
        if ((res == ERROR_SUCCESS) || (res == ERROR_MORE_DATA))
        {
            p = pBuff;
            for (; dwRec > 0; dwRec--)
            {
                std::wstring name(p->usri1_name);                
                if (p->usri1_flags & UF_NORMAL_ACCOUNT && !(p->usri1_flags & UF_ACCOUNTDISABLE) && !(p->usri1_flags & UF_PASSWD_NOTREQD))
                {                   
                    hr =  _EnumerateOneCredential(index, name.c_str());
                    index++;
                }

                i = p->usri1_next_index;
                p++;
            }

            NetApiBufferFree(pBuff);
        }

    } while (res == ERROR_MORE_DATA); // end do

    return hr;
}

在此更改后,我的凭据提供程序是:

现在我想管理 Active Directory 用户,对我来说非常重要,管理(其他用户)磁贴(图片中)。

我如何获得它?

如果我禁用了其他登录方法,例如密码提供程序或从过滤器中使用,则只会显示我的凭据提供程序用户,而其他用户和 Active Directory 用户将被隐藏。

所以我认为,我必须获取到其他用户磁贴的链接并进行管理。

谢谢。

【问题讨论】:

    标签: c++ authentication windows-7 credential-providers winlogon


    【解决方案1】:

    您必须实现并枚举您自己的Other User 磁贴。

    此磁贴必须接受并提供 CPFT_EDIT_TEXT 类型的输入字段,用于输入用户名 (UPN)、密码和您可能需要的任何其他凭据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-02
      • 1970-01-01
      • 2021-05-12
      • 1970-01-01
      • 2021-01-10
      • 2021-11-14
      • 1970-01-01
      相关资源
      最近更新 更多