CredWrite kehrt Win32-Fehlercode 2 (ERROR_INVALID_FUNCTION) „Unzulässige Funktion.“
Frage
ich versuche CredWrite , aber es ERROR_INVALID_FUNCTION zurückkehrt. ich kann rufen CredRead Anmeldeinformationen holen aus das Passwort zu speichern, und ich kann neue Anmeldeinformationen speichern, indem Sie CredUIPromptForCredentials .
Aber ich kann nicht herausfinden, wie man get CredWrite an der Arbeit.
Der Code ich verwende ist:
var
Target, Username, Password: WideString;
begin
Target := 'StackOverflowSomething';
Username := 'IanBoyd';
Password := 'password69';
ZeroMemory(@Credentials, SizeOf(Credentials));
Credentials.TargetName := PWideChar(Target);
Credentials.Type_ := CRED_TYPE_GENERIC;
Credentials.UserName := PWideChar(Username);
Credentials.Persist := CRED_PERSIST_ENTERPRISE;
Credentials.CredentialBlob := PByte(Password);
Credentials.CredentialBlobSize := 2*(Length(Password));
Credentials.UserName := PWideChar(Username);
if not CredWriteW(@Credentials, 0) then
RaiseLastWin32Error;
Und GetLastError zurückkehrt 1 (ERROR_INVALID_FUNCTION
)
Ist diese Funktion nicht richtig? Es ist nicht einmal ERROR_INVALID_PARAMETER
Rückkehr, es ist „Unzulässige Funktion“ zurück. Was ist falsch?
Gibt es einen Beispielcode gibt, die CredWrite nennt?
Notizen
- Ich habe versucht, die Ansi-Version aufrufen (CredWriteA), das gleiche Resultat
- Ich habe versucht,
CRED_PERSIST_SESSION
undCRED_PERSIST_LOCAL_MACHINE
mit, zusätzlich zuCRED_PERSIST_ENTERPRISE
Lösung
Nevermind, ich es herausgefunden.
Und es ist nicht die Schuld der API-Aufruf oder meine Parameter.
ich bin einfach nur dumm.
Und ich will weg schmollen, ohne zu haben, zu sagen, was ich tue: (
Andere Tipps
Sollte das nicht
Credentials.Type_ := CRED_TYPE_GENERIC;
Seien Sie stattdessen?
Credentials.Type := CRED_TYPE_GENERIC;
Ich bin gespannt, dann ist dies für den Smartcard, nicht wahr? und Sie speichern den Stift nicht auf die Smartcard, vielleicht die Befestigung / Treiber nicht für die credwrite zur Arbeit geladen? Vielleicht mit einem Standard von Windows verwendet Smartcard-Hardware / Software definierte die CredWrite Funktion, meine Vermutung ist, dass aktivieren CredWrite mit etwas zu kommunizieren versucht, (vielleicht einem generischen API-Aufruf zu einer Standardfunktion innerhalb der Smartcard-Hardware?) ... nur meine Gedanken ...
Hope, das hilft, Freundliche Grüße, Tom.