c++authenticationwindows-7credential-providerswinlogon

C++ - How do I manage other user in Credential Provider V1 (Vista-Win7)


I develop a code to credential provider V2 for windows 10. I manage local users and active directory users also other user tile in windows 10 by V2 of credential provider.

Now I develop an other code for use in windows 7. I use from V1 credential provider. I customize It for show local user. By follow code in _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;
}

After this changes my credential provider is:

enter image description here

Now I want to manage Active Directory Users and very important for me, manage (Other User) Tile (In picture).

How do I get it?

If I disabled other method for login like password provider or use from filter, only it show my credential provider users and Other User and Active Directory Users are hide.

So I think, I must get link to other user tile and manage it, or not.

Thanks.


Solution

  • You must implement and enumerate your own Other User tile.

    This tile must accept and provide input field of type CPFT_EDIT_TEXT for User Name (UPN), password and any other credential you can need.