我构建了一个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
对象的情况下初始化其凭据?提前致谢。