0

我使用 ADSI 获得 maxpwdage 值和 pwdlastset 值。

现在我想检查密码到期日期...

hr = pDomain->get_MaxPasswordAge(&ret);

maxpwdage 给出 432000 ...

hr = pUser->get_PasswordLastChanged(&expirationDate);

pwdlastset 给出 41176.470196759263 ......

如何使用此值实现密码到期日期?

4

1 回答 1

1

最大密码年龄

  • 指示用户必须更改密码的最大时间间隔(以秒为单位)。

密码上次更改

  • 上次更改密码的时间。

您需要将 MaxPasswordAge 添加到 PasswordLastChanged。

变体日期

类型:日期

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

  • 可以使用 VariantTimeToDosDateTime 将日期转换为 MS-DOS 表示或从 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获取人类可读的日期。

于 2012-10-30T09:41:42.057 回答