我想使用c ++ win32 API ...
显示密码到期对话框我是使用System.directoryservice命名空间...
完成的但现在我需要Win32 API ..
那里有任何函数可以获取密码到期日期吗?
提前致谢
答案 0 :(得分:3)
您可以使用以下函数获取密码到期日期:
HRESULT GetPasswordExpirationDate(LPTSTR lpszPathName, LPSYSTEMTIME lpExpirationDate)
{
HRESULT hr;
IADsUser *pUser;
hr = ADsGetObject(lpszPathName, IID_IADsUser, (void**) &pUser);
if(SUCCEEDED(hr))
{
DATE expirationDate;
hr = pUser->get_PasswordExpirationDate(&expirationDate);
if (SUCCEEDED(hr))
VariantTimeToSystemTime(expirationDate, lpExpirationDate);
pUser->Release();
}
return hr;
}
其中lpszPathName
是LDAP或WinNT路径,lpExpirationDate
是指向SYSTEMTIME
结构的指针。
请注意,您必须包含Windows.h
,Iads.h
和Adshlp.h
,并与ADSIid.Lib
和ActiveDS.Lib
相关联才能使其发挥作用。
使用示例:
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
SYSTEMTIME expirationDate;
HRESULT hr = GetPasswordExpirationDate(_T("WinNT://ComputerName/UserName,user"),
&expirationDate);
if (SUCCEEDED(hr))
{
//TODO: do whatever you want with the expirationDate here
}
CoUninitialize();
您可能希望使用以下API调用之一来检索当前用户和计算机/域名:GetUserName
,GetComputerName
GetUserNameEx
,NetWkstaUserGetInfo
如果您需要检索多个域用户的密码到期日期,最好使用ADsBuildEnumerator
而不是ADsGetObject
(请参阅MSDN上的示例)。