SSPI переговоры не найдены - PullRequest
0 голосов
/ 06 марта 2010

Я использую Windows XP Pro SP3. Я хочу использовать функции SSPI в моем коде. Я скомпилировал свой код, без ошибок.

Я установил для пакета безопасности значение Переговоры , что рекомендуется.

Когда я запускаю свою программу, Переговоры не могут быть использованы, потому что не могут быть найдены. Итак, я попробовал вместо этого «Kerberos», и та же ошибка: пакет безопасности не найден.

Я просмотрел реестр и по этому ключу: HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Control / Lsa / Security Packages , доступны следующие пакеты безопасности: kerberos , msv1_0 , канал , wdigest . Переговоры и NTLM отсутствуют.

Я не понимаю, почему моей программе не удается найти какой-либо пакет безопасности. Возвращенный код ошибки: 0x80090305 , и я не смог найти подсказки о том, как это исправить.

Итак, если вы освоите SSPI, пожалуйста, мне нужна ваша помощь! У меня есть что-то, чтобы изменить в реестре? Или, может быть, мне нужно зарегистрировать некоторые библиотеки DLL?

Спасибо за любую подсказку Bye!

1 Ответ

2 голосов
/ 06 марта 2010

SSPI - это корова для отладки без кода :)

Попробуйте этот код, посмотрите, работает ли он, если он работает, повторите попытку и замените NTLM на Negotiate. На самом деле, вместо использования слова "согласовать" #include "security.h" и используйте NEGOSSP_NAME.

Также попробуйте это и посмотрите, есть ли в списке Negotiate:

int main (int argc, _TCHAR * argv []) { ULONG cPackages = 0; PSecPkgInfo pInfo = NULL; SECURITY_STATUS stat = EnumerateSecurityPackages (& cPackages, & pInfo); if (stat == SEC_E_OK) { for (ULONG i = 0; i

убедитесь, что вы определили SECURITY_WIN32 в своем заголовке и связываетесь с secur32.

...