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

C++ 如何使用C+中的pwdlastset值和maxpwdage值获取pwdexpirydate+;win32 API?,c++,windows,winapi,active-directory,adsi,C++,Windows,Winapi,Active Directory,Adsi,我使用ADSI获取maxpwdage值和pwdlastset值 现在我想检查密码到期日期 hr=pDomain->get_MaxPasswordAge(&ret) maxpwdage给出了432000 hr=pUser->get\u PasswordLastChanged(&expirationDate) pwdlastset给出41176.470196759263 如何使用此值实现密码到期日期?MaxPasswordAge 指示用户必须更改密码的最大时间间隔(以秒为单位) Password

我使用ADSI获取maxpwdage值和pwdlastset值

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

hr=pDomain->get_MaxPasswordAge(&ret)

maxpwdage给出了432000

hr=pUser->get\u PasswordLastChanged(&expirationDate)

pwdlastset给出41176.470196759263


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

MaxPasswordAge

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

  • 上次更改密码的时间
您需要将MaxPasswordAge添加到PasswordLastChanged

变更日期

类型:日期

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

  • 可以使用VariantItemTosDateTime将日期转换为MS-DOS表示形式或从MS-DOS表示形式转换为日期

这意味着1.0代表一天

来自WTypes.h:

typedef double DATE;
因此:

86400=24*60*60=秒/天


然后使用获取人类可读的日期。

@rkosegi:in
expirationDate.date
.date…你怎么能拥有date属性,在使用
->
::
…@SanjuMonu:对不起,我以为你使用的是VARIANT而不是date。请查看更新的答案。
DATE expirationDate;
VARIANT vtExpDate;

expirationDate += (double)(ret / 86400);

vtExpDate.vt = VT_DATE ;
vtExpDate.date = date ;