如何在C ++ win32 API中使用pwdlastset值和maxpwdage值获取pwdexpirydate?

时间:2012-10-30 09:09:22

标签: c++ windows winapi active-directory adsi

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

现在我要查看密码到期日期......

hr = pDomain->get_MaxPasswordAge(&ret);

maxpwdage给出432000 ......

hr = pUser->get_PasswordLastChanged(&expirationDate);

pwdlastset给出了41176.470196759263 ......

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

1 个答案:

答案 0 :(得分: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获取人类可读日期。