я получаю значение maxpwdage и значение pwdlastset, используя ADSI ..
Теперь я хочу проверить срок действия пароля …
hr = pDomain->get_MaxPasswordAge(&ret);
maxpwdage дает 432000 …
hr = pUser->get_PasswordLastChanged(&expirationDate);
pwdlastset дает 41176.470196759263 …
Как добиться истечения срока действия пароля, используя это значение?
MaxPasswordAge
PasswordLastChanged
Вам нужно добавить MaxPasswordAge в PasswordLastChanged.
ВАРИАНТНАЯ дата
Тип: ДАТА
Значение даты и времени. Даты представлены в виде чисел двойной точности, где полночь, 1 января 1900 года — 2,0, 2 января 1900 года — 3,0 и т. Д.
Дата может быть преобразована в представление MS-DOS и из него с помощью VariantTimeToDosDateTime.
Так что это означает, что 1,0 представляют один день.
из WTypes.h:
typedef double DATE;
Так:
DATE expirationDate;
VARIANT vtExpDate;
expirationDate += (double)(ret / 86400);
vtExpDate.vt = VT_DATE ;
vtExpDate.date = date ;
86400 = 24 * 60 * 60 = секунд / день
Тогда используйте VariantTimeToDosDateTime чтобы получить удобочитаемую дату.
Других решений пока нет …