Question

J'utilise Windows XP Pro SP3. Je veux utiliser les fonctions SSPI dans mon code. J'ai compilé mon code, aucune erreur.

Je définis le pack de sécurité à utiliser pour Négocier, ce qui est recommandé.

Quand je commence mon programme, Négocier ne peut pas être utilisé car il ne peut pas être trouvé. J'ai donc essayé "Kerberos" à la place et la même erreur: le package de sécurité ne peut être trouvé.

J'ai jeté un œil au registre, et selon cette clé: HKEY_LOCAL_MACHINE / System / CurrentControlset / Control / LSA / Security Packages, les forfaits de sécurité disponibles sont: kerberos, msv1_0, schannel, wdigest. Négocier et Ntlm sont manquantes.

Je ne comprends pas pourquoi mon programme ne trouve aucun package de sécurité. Le code d'erreur renvoyé est 0x80090305 Et je n'ai pas trouvé de moindre indice sur un moyen de le réparer.

Donc, si vous maîtrisez le SSPI, s'il vous plaît, j'ai besoin de votre aide! Ai-je quelque chose à modifier dans le registre? Ou peut-être que j'ai besoin d'enregistrer des DLL?

Merci pour tout indice!

Était-ce utile?

La solution

SSPI est une vache à déboguer sans code :)

Essayez ce code, voyez si cela fonctionne, si c'est le cas, réessayez-le et remplacez NTLM par négocier. En fait, plutôt que d'utiliser le mot, "négocier" #include "security.h" et utiliser negossp_name.

Essayez également ceci et voyez si la négociation est dans la liste:

int main (int argc, _tchar * argv []) {ulong cpackages = 0; Psecpkginfo pinfo = null; Security_Status stat = enummeratesECurityPackages (& 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); } return 0; }

Assurez-vous de définir Security_Win32 dans votre en-tête et liez avec Secur32.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top