SSPI negozia non trovata
Domanda
Sto usando Windows XP Pro SP3. Voglio usare le funzioni SSPI nel mio codice. Ho compilato il mio codice, nessun errore.
Ho impostato il pacchetto di sicurezza a cui essere abituato Negoziare, che è raccomandato.
Quando inizio il mio programma, Negoziare non può essere usato perché non può essere trovato. Quindi, ho provato invece "Kerberos" e lo stesso errore: il pacchetto di sicurezza non può essere trovato.
Ho dato un'occhiata al registro e secondo quella chiave: HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlset/Control/LSA/Pacchetti di sicurezza, i pacchetti di sicurezza disponibili sono: Kerberos, msv1_0, Schannel, Wdigest. Negoziare e Ntlm mancano.
Non capisco perché il mio programma non riesca a trovare alcun pacchetto di sicurezza. Il codice di errore restituito è 0x80090305 E non sono riuscito a trovare alcun suggerimento su un modo per risolverlo.
Quindi, se padroneggi SSPI, per favore ho bisogno del tuo aiuto! Ho qualcosa da modificare nel registro? O forse ho bisogno di registrare alcune DLL?
Grazie per qualsiasi suggerimento ciao!
Soluzione
SSPI è una mucca da debug senza codice :)
Prova questo codice, vedi se funziona, se lo fa, ribadisci e sostituisci NTLM con negoziazione. In realtà, piuttosto che usare la parola "negozia" #include "security.h" e usare negossp_name.
Inoltre, prova questo e vedi se negoziare è nell'elenco:
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 <cpackages; i ++) {wprintf (l "%s t%s n", pinfo [i] .name, pinfo [i] .comment) ; } FreeContextBuffer (pinfo); } return 0; }
Assicurati di definire Security_Win32 nell'intestazione e collega con Secur32.