我使用 ADSI 获得 maxpwdage 值和 pwdlastset 值。
现在我想检查密码到期日期...
hr = pDomain->get_MaxPasswordAge(&ret);
maxpwdage 给出 432000 ...
hr = pUser->get_PasswordLastChanged(&expirationDate);
pwdlastset 给出 41176.470196759263 ......
如何使用此值实现密码到期日期?
我使用 ADSI 获得 maxpwdage 值和 pwdlastset 值。
现在我想检查密码到期日期...
hr = pDomain->get_MaxPasswordAge(&ret);
maxpwdage 给出 432000 ...
hr = pUser->get_PasswordLastChanged(&expirationDate);
pwdlastset 给出 41176.470196759263 ......
如何使用此值实现密码到期日期?
最大密码年龄
密码上次更改
您需要将 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获取人类可读的日期。