You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义Credential Provider中如何获取登录状态?能否使用ReportResult?

在自定义Credential Provider中识别登录状态及ReportResult的使用
  • 核心结论:可通过ReportResult直接判断登录状态
    ReportResult是Credential Provider的核心回调方法,系统会在登录尝试完成后主动调用它,传入的ntsStatus参数直接对应登录操作的结果:

    • 登录成功时,ntsStatus返回STATUS_SUCCESS(0x00000000)
    • 登录失败时,会返回对应错误的NTSTATUS码(如STATUS_LOGON_FAILURE、STATUS_ACCOUNT_LOCKED_OUT等)
  • ReportResult方法的实际使用示例
    在实现该方法时,可直接根据状态码判断登录状态并处理:

    HRESULT DCVWindowsCredential::ReportResult(NTSTATUS ntsStatus,
                                              NTSTATUS ntsSubstatus,
                                              _Outptr_result_maybenull_ PWSTR *ppwszOptionalStatusText,
                                              _Out_ CREDENTIAL_PROVIDER_STATUS_ICON *pcpsiOptionalStatusIcon)
    {
        // 初始化输出参数
        *ppwszOptionalStatusText = nullptr;
        *pcpsiOptionalStatusIcon = CPSI_NONE;
    
        // 判断登录状态
        if (NT_SUCCESS(ntsStatus))
        {
            // 登录成功逻辑:比如记录日志、触发自定义通知等
        }
        else
        {
            // 根据错误码处理失败场景
            switch (ntsStatus)
            {
                case STATUS_LOGON_FAILURE:
                    *ppwszOptionalStatusText = L"用户名或密码错误";
                    *pcpsiOptionalStatusIcon = CPSI_ERROR;
                    break;
                case STATUS_ACCOUNT_LOCKED_OUT:
                    *ppwszOptionalStatusText = L"账户已锁定";
                    *pcpsiOptionalStatusIcon = CPSI_ERROR;
                    break;
                default:
                    *ppwszOptionalStatusText = L"登录失败";
                    *pcpsiOptionalStatusIcon = CPSI_ERROR;
                    break;
            }
        }
    
        return S_OK;
    }
    
  • 额外说明

    • 无需依赖WM_WTSSESSION_CHANGE或安全事件日志,ReportResult是Credential Provider内部判断登录状态最直接的方式
    • ntsSubstatus参数可提供更细分的错误子状态,用于精细化错误处理
    • 若给ppwszOptionalStatusText分配字符串,需使用CoTaskMemAlloc分配内存,系统会负责后续释放

内容的提问来源于stack exchange,提问作者hyoyin_Kyuoma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 21:52:33