1

我构建了一个V2凭据提供程序示例并将其注册到windows10,单击“登录选项”后可以加载并显示在解锁屏幕中,但在开机/切换用户登录屏幕中无法显示提供程序. 我在这样的代码中输入了一些日志

HRESULT CSampleProvider::_EnumerateCredentials()
{
    DebugTrace(__FILEW__, __LINE__, _T("enter _EnumerateCredentials"));

    HRESULT hr = E_UNEXPECTED;
    if (_pCredProviderUserArray != nullptr)
    {
        DWORD dwUserCount;
        _pCredProviderUserArray->GetCount(&dwUserCount);

        **DebugTrace(__FILEW__, __LINE__, _T("    dwUserCount = %d"), dwUserCount);**

        if (dwUserCount > 0)
        {
            ICredentialProviderUser *pCredUser;
            hr = _pCredProviderUserArray->GetAt(0, &pCredUser);
            if (SUCCEEDED(hr))
            {
                _pCredential = new(std::nothrow) CSampleCredential();
                if (_pCredential != nullptr)
                {
                    hr = _pCredential->Initialize(_cpus, s_rgCredProvFieldDescriptors, s_rgFieldStatePairs, pCredUser);
                    if (FAILED(hr))
                    {
                        _pCredential->Release();
                        _pCredential = nullptr;
                    }
                }
                else
                {
                    hr = E_OUTOFMEMORY;
                }
                pCredUser->Release();
            }
        }
    }
    return hr;
}

结果 dwUserCount 在开机/切换用户登录屏幕中为 0,因此提供者不会初始化任何凭据。我的问题是,如何让提供者在没有ICredentialProviderUser对象的情况下初始化其凭据?提前致谢。

4

1 回答 1

1

确切的答案 - 现在。

Windows Logon场景假设有一些用户可以登录计算机,并且可以选择使用哪个提供商进行登录。

每个都User's tile将有一组来自在计算机上注册的凭据提供程序的图标。

您的提供商必须接受可以登录计算机的用户列表,并决定是否在用户磁贴旁边显示它的图标。

在这种情况下,唯一可能的方法是实现默认磁贴行为,如 v1 凭据提供程序指南中所述。

于 2021-06-08T11:30:47.840 回答