CredWrite kehrt Win32-Fehlercode 2 (ERROR_INVALID_FUNCTION) „Unzulässige Funktion.“

StackOverflow https://stackoverflow.com/questions/2337672

  •  22-09-2019
  •  | 
  •  

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 und CRED_PERSIST_LOCAL_MACHINE mit, zusätzlich zu CRED_PERSIST_ENTERPRISE
War es hilfreich?

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.

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