我正在使用Windows XP Pro SP3。我想在我的代码中使用SSPI功能。我编译了代码,没有错误。

我设置了用于使用的安全包 谈判, ,建议使用。

当我启动程序时, 谈判 无法使用,因为找不到它。因此,我尝试了“ kerberos”,并且同样的错误:找不到安全软件包。

我看了注册表,并根据该关键: hkey_local_machine/system/currentControlset/control/lsa/安全软件包, ,可用的安全软件包是: kerberos, MSV1_0, Schannel, wdigest. 谈判ntlm 缺失。

我不明白为什么我的程序找不到任何安全包。返回的错误代码是 0x80090305 而且我找不到关于修复它的方法的任何暗示。

因此,如果您掌握了SSPI,请我需要您的帮助!我在注册表中有一些修改吗?还是我需要注册一些DLL?

感谢您的任何暗示!

有帮助吗?

解决方案

SSPI是没有代码的牛:)

尝试此代码,查看是否有效,如果确实有效,请重新尝试并用谈判替换NTLM。实际上,“协商” #include“ security.h”并使用negossp_name,而不是使用单词。

另外,尝试此操作,看看谈判是否在列表中:

int main(int argc,_tchar* argv []){ulong cpackages = 0; psecpkginfo pinfo = null; security_status stat = enumerateCurityPackages(&cpackages,&pinfo); if(stat == sec_e_ok){for(ulong i = 0; i <cpackages; i ++){wprintf(l“%s t%s n”,pinfo [i] .name,pinfo [i] .comment) ; } freecontextbuffer(pinfo); }返回0; }

确保您在标题中定义Security_Win32,并与SECUR32链接。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top