Ver Mensaje Individual
  #6  
Antiguo 12-01-2015
Mendizabal Mendizabal is offline
Miembro
NULL
 
Registrado: sep 2014
Posts: 31
Reputación: 0
Mendizabal Va por buen camino
Buenas Club Delphi,
Esta tarde he tenido un rato libre (bendito lujo), y he logrado solucionar el problema. En realidad, como veréis, la cosa es mucho más sencilla de lo que parecía. Únicamente hacía falta tener un poco de tiempo para investigar. Os dejo una función de ejemplo por si alguien le sirve en el futuro:

Código Delphi [-]
procedure TForm1.SaveCredentials(Target: WideString; User: WideString; Password: WideString);
begin
  CREDENTIALS.TargetName := PWideChar(Target);
  CREDENTIALS.Type_:= CRED_TYPE_GENERIC;
  CREDENTIALS.UserName := PWideChar(User);
  CREDENTIALS.Persist := CRED_PERSIST_ENTERPRISE;
  CREDENTIALS.CredentialBlob := PByte(Password);
  CREDENTIALS.CredentialBlobSize := 2*(Length(Password));

  if CredWrite(@CREDENTIALS,0) then
    ShowMessage('Sucess')
  else
    ShowMessage(IntToStr(GetLastError));
end;

Hay que tener en cuenta que he tenido que utilizar la librería "JEDI Windows API" que traduce las funciones avanzadas de la API de Windows a DELPHI. No es mayor problema, ya sabemos que la gente de PROJECT JEDI hace un fabuloso trabajo traduciendo cabeceras de C a DELPHI. En fin, en definitiva, hay que llamar a JwaWinCred.

Por cierto, la variable CREDENTIALS es del tipo CREDENTIALW (contenida en JwaWinCred).

Links de interés (Por favor, que algún moderador formatee bien los enlaces. Es en atención a posibles usuarios interesados en este tema. Muchas gracias):
Muchas gracias a todos por la atención. Espero que esta información le resulte útil a alguien.

Última edición por nlsgarcia fecha: 12-01-2015 a las 17:57:05. Razón: Inclusión de Links por Limitación del Usuario (Menos de 10 mensajes publicados)
Responder Con Cita