Frage

Ich verwende Windows XP Pro SP3. Ich möchte SSPI -Funktionen in meinem Code verwenden. Ich habe meinen Code zusammengestellt, kein Fehler.

Ich habe das Sicherheitspaket festgelegt, an das ich gewöhnt werden soll Verhandeln, was empfohlen wird.

Wenn ich mein Programm starte, Verhandeln kann nicht verwendet werden, weil es nicht gefunden werden kann. Also habe ich stattdessen "Kerberos" ausprobiert, und der gleiche Fehler: Das Sicherheitspaket kann nicht gefunden werden.

Ich habe mir die Registrierung angesehen und nach diesem Schlüssel: Hkey_local_maachine/system/currentControlSet/control/lSA/Sicherheitspakete, Die verfügbaren Sicherheitspakete sind: Kerberos, msv1_0, Schannel, wdigest. Verhandeln und Ntlm fehlen.

Ich verstehe nicht, warum mein Programm kein Sicherheitspaket finden kann. Der zurückgegebene Fehlercode ist 0x80090305 Und ich konnte keinen Hinweis auf einen Weg finden, um es zu beheben.

Also, wenn Sie den SSPI beherrschen, brauche ich bitte Ihre Hilfe! Habe ich in der Registrierung etwas zu ändern? Oder muss ich vielleicht einige DLLs registrieren?

Danke für einen Hinweis auf Tschüss!

War es hilfreich?

Lösung

SSPI ist eine Kuh, um ohne Code zu debuggen :)

Probieren Sie diesen Code aus, prüfen Sie, ob er funktioniert, wenn dies der Fall ist, und ersetzen Sie NTLM durch Verhandlungen. Tatsächlich, anstatt das Wort zu verwenden, verhandeln Sie "#include" Security.h "und verwenden Sie negossp_name.

Versuchen Sie dies auch und prüfen Sie, ob sich die Verhandlung in der Liste befindet:

int main (int argc, _tchar* argv []) {ulong cpackages = 0; PSecpkginfo pinfo = null; Security_Status stat = enumerateSecuritypackages (& cpackages, & pinfo); if (stat == sec_e_ok) {für (ulong i = 0; i <cpackages; i ++) {wprintf (l "%s t%s n", Pinfo [i] .Name, Pinfo [i] .Coment) ; } FreecontextBuffer (Pinfo); } return 0; }

Stellen Sie sicher, dass Sie Security_Win32 in Ihrem Header definieren und mit Secur32 verknüpfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top