当前,我们正在使用AdsGetObject MSDN API通过https://docs.microsoft.com/en-us/windows/win32/ad/example-code-for-searching-for-users示例获取用户的密码到期信息,并且对于组策略对象密码到期信息也可以正常工作。
但是昨天,我们得到了升级,该API并不遵守通过密码设置对象策略强制实施的密码过期。
没有人知道这个API可以通过组策略来遵循PSO策略来获取密码有效期数据吗?甚至net user <username>
命令也会根据组策略而不是PSO策略返回密码过期日期。
类似的事情似乎对我有用
swprintf(wszCandidateAccount, _countof(wszCandidateAccount), L"WinNT://%s/%s, user", wszDomainOrMachine, wszUserName);
if (FAILED(hr = ADsOpenObject(wszCandidateAccount, NULL, NULL, ADS_SECURE_AUTHENTICATION, IID_IADsUser, (void **)&pIADsUser)))
{
ShowError("ADsOpenObject->Retrieving user object", hr);
CoUninitialize();
return 1;
}
DATE expDate;
hr = pIADsUser->get_PasswordExpirationDate(&expDate);