CredWrite retourne le code d'erreur Win32 2 (ERROR_INVALID_FUNCTION) « Fonction incorrecte. »
Question
Je suis en train d'appeler CredWrite , mais il est de retour ERROR_INVALID_FUNCTION . je peux appeler CredRead pour récupérer les informations sur le magasin de mot de passe, et je peux stocker de nouvelles informations d'identification en utilisant CredUIPromptForCredentials .
Mais je ne peux pas comprendre comment obtenir CredWrite travailler.
Le code j'utilise est:
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;
Et GetLastError retourne 1 (ERROR_INVALID_FUNCTION
)
est cette fonction incorrecte? Il est même pas revenir ERROR_INVALID_PARAMETER
, il est de retour « Dysfonctionnement ». Qu'est-ce que est incorrect?
Y at-il des exemples de code qui il appelle CredWrite?
Remarques
- je l'ai essayé d'appeler la version Ansi (de CredWriteA), même résultat
- je l'ai essayé d'utiliser
CRED_PERSIST_SESSION
etCRED_PERSIST_LOCAL_MACHINE
, en plus deCRED_PERSIST_ENTERPRISE
La solution
Nevermind je compris.
Et ce n'est pas la faute de l'appel API, ou mes paramètres.
Je suis tout simplement stupide.
Et je veux bouder au large, sans avoir à dire ce que je l'ai fait: (
Autres conseils
Si pas
Credentials.Type_ := CRED_TYPE_GENERIC;
Soyez ce lieu?
Credentials.Type := CRED_TYPE_GENERIC;
Je suis curieux, c'est pour la carte à puce, à droite? et vous stockez la broche non à la carte à puce, peut-être la pièce jointe / pilote n'est pas chargé pour le credwrite de travailler? Peut-être, avec un matériel de carte à puce standard défini / logiciel utilisé par Windows pour activer la fonction CredWrite, je suppose que CredWrite tente de communiquer avec quelque chose (peut-être un appel API générique pour une fonction standard dans le matériel de carte à puce?) ... juste mes pensées ...
Hope this helps, Meilleures salutations, Tom.