Windows — Как получить pwdexpirydate, используя значение pwdlastset и значение maxpwdage в C ++ win32 API?

я получаю значение maxpwdage и значение pwdlastset, используя ADSI ..

Теперь я хочу проверить срок действия пароля …

hr = pDomain->get_MaxPasswordAge(&ret);

maxpwdage дает 432000 …

hr = pUser->get_PasswordLastChanged(&expirationDate);

pwdlastset дает 41176.470196759263 …

Как добиться истечения срока действия пароля, используя это значение?

0

Решение

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 чтобы получить удобочитаемую дату.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector