我正在使用Windows SP3。我想在我的代码中使用SSPI函数。我编译了我的代码,没有错误。
我设置了用于协商的安全包,这是推荐的。
当我启动我的程序时,协商无法使用,因为找不到它。因此,我尝试了"Kerberos“,同样的错误:找不到安全包。
我看了一下注册表,根据这个键:HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Lsa/Security Packages,可用的安全包是:kerberos、msv1_、schannel、wdigest。NTLM和NTLM失踪了。
我不明白为什么我的程序找不到任何安全包。返回的错误代码是0x80090305,我找不到任何修复方法的提示。
所以,如果你掌握了SSPI,我需要你的帮助!注册表中有什么要修改吗?或者我需要注册一些DLL?
谢谢你的提示再见!
发布于 2010-03-06 03:28:20
SSPI是一个可以在没有代码的情况下调试的工具:)
试试这段代码,看看它是否有效,如果有效,就重新试一试,用协商代替NTLM。实际上,“协商”#包括"security.h“并使用NEGOSSP_NAME,而不是使用这个词。
另外,试试这个,看看谈判是否在列表中:
int main(int,_TCHAR* argv[]) { ULONG cPackages = 0;PSecPkgInfo pInfo = NULL;SECURITY_STATUS stat = EnumerateSecurityPackages(&cPackages,&pInfo);if (stat == SEC_E_OK) { for (ULONG i= 0;i< cPackages;i++) {wprintf(L“%s\t%s\n,pInfoi.Name,pInfoi.Comment);} FreeContextBuffer(pInfo);}返回0;}
确保您在头中定义了SECURITY_WIN32,并与secur32链接。
https://stackoverflow.com/questions/2390911
复制相似问题