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!

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top