微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

解决方法

确切的答案 - 没有。

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。