如何在C ++中的Win32 API使用的pwdLastSet值和maxpwdage价值得到pwde

2019-10-28 13:18发布

我得到的maxpwdage值,并使用ADSI的pwdLastSet值..

现在,我要检查密码到期日...

hr = pDomain->get_MaxPasswordAge(&ret);

maxpwdage给人432000 ...

hr = pUser->get_PasswordLastChanged(&expirationDate);

的pwdLastSet给41176.470196759263 ...

如何实现使用这个值的密码有效期?

Answer 1:

MaxPasswordAge

  • 指示最大时间间隔(秒),在此之后,密码必须由用户改变。

PasswordLastChanged

  • 上一次的密码已被更改。

您需要MaxPasswordAge添加到PasswordLastChanged。

VARIANT日期

类型:DATE

  • 日期和时间值。 日期被表示为双精度数,其中午夜,1900年1月1日为2.0,1900年1月2日是3.0,等等。

  • 日期可以被转换为与使用VariantTimeToDosDateTime一个MS-DOS表示。

因此,这意味着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让人类可读的日期。



文章来源: how to get pwdexpirydate using pwdlastset value and maxpwdage value in C++ win32 API?