如何使 v2 凭据提供程序在没有 `ICredentialProviderUser` 对象的情况下初始化其凭据?

how to make a v2 credential provider initialize its credentials without `ICredentialProviderUser` object?

我构建了一个 V2 凭据提供程序示例并将其注册到 windows10,单击“登录选项”后可以在解锁屏幕中加载并显示提供程序,但无法在解锁屏幕中显示提供程序power-on/switch-user 登录屏幕。我把一些日志放在这样的代码中

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;
}

原来 power-on/switch-user 登录屏幕中的 dwUserCount 为 0,因此提供者不会初始化任何凭据。 我的问题是,如何让提供者在没有 ICredentialProviderUser 对象的情况下初始化其凭据? 提前致谢。

确切答案 - 暂时。

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

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

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

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