c++ windows winapi active-directory adsi

cómo obtener pwdexpirydate usando el valor de pwdlastset y el valor de maxpwdage en la API C++ win32?



windows winapi (1)

MaxPasswordAge

  • Indica el intervalo de tiempo máximo, en segundos, después del cual el usuario debe cambiar la contraseña.

PasswordLastChanged

  • La última vez que se cambió la contraseña.

Necesita agregar MaxPasswordAge a PasswordLastChanged.

Fecha VARIANTE

Tipo: FECHA

  • Un valor de fecha y hora. Las fechas se representan como números de precisión doble, donde la medianoche, el 1 de enero de 1900 es 2.0, el 2 de enero de 1900 es 3.0, y así sucesivamente.

  • La fecha se puede convertir desde y hacia una representación de MS-DOS utilizando VariantTimeToDosDateTime.

Entonces esto significa que 1.0 representa un día.

de WTypes.h:

typedef double DATE;

Asi que:

DATE expirationDate; VARIANT vtExpDate; expirationDate += (double)(ret / 86400); vtExpDate.vt = VT_DATE ; vtExpDate.date = date ;

86400 = 24 * 60 * 60 = segundos / día

Luego use VariantTimeToDosDateTime para obtener una fecha legible por humanos.

Obtengo el valor de maxpwdage y el valor de pwdlastset usando ADSI.

Ahora quiero verificar la fecha de caducidad de la contraseña ...

hr = pDomain->get_MaxPasswordAge(&ret);

maxpwdage da 432000 ...

hr = pUser->get_PasswordLastChanged(&expirationDate);

pwdlastset da 41176.470196759263 ...

cómo alcanzar la fecha de caducidad de la contraseña usando este valor?