AcquireCredentialsHandle returns SEC_E_SECPKG_NOT_FOUND

AcquireCredentialsHandle returns SEC_E_SECPKG_NOT_FOUND

尝试在 Windows 10 上检索凭据处理程序时,无论我为安全包提供什么功能,我都会收到此错误。 Kerberos 是 Windows 系统上的默认设置,因此我尝试进行以下调用:

SEC_WINNT_AUTH_IDENTITY *ident = NULL; // 这是用有效凭证填充的 静态 CredHandle credHandle;

A​​cquireCredentialsHandle( NULL, "Kerberos", SECPKG_CRED_OUTBOUND, NULL, (void*)ident, NULL, NULL, &credHandle, NULL );

我已在我的注册表中验证 Kerberos 与其他安全包一起存在。无论我尝试使用哪个包(Kerberos、SChannel、NTLM 等),我都会收到同样的错误。

我发现了问题所在。仅使用诸如“Negotiate”之类的字符串存在 UTF-8 到 UTF-16 的转换问题。为了解决这个问题,必须使用以下内容代替纯字符串: (TCHAR*)TEXT("谈判")