gpt4 book ai didi

c++ - 使用 C++ 的密码到期日期?

转载 作者:可可西里 更新时间:2023-11-01 09:25:30 32 4
gpt4 key购买 nike

我想使用 C++ win32 API 显示密码过期对话框...

我是使用 System.directoryservice 命名空间完成的...

但现在我需要 Win32 API..

有没有获取密码有效期的函数?

提前致谢

最佳答案

您可以使用以下函数获取密码到期日期:

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;
}

lpszPathNameLDAPWinNT路径和 lpExpirationDate 是指向 SYSTEMTIME 的指针结构。

请注意,您必须包含 Windows.hIads.hAdshlp.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 上的示例)。

关于c++ - 使用 C++ 的密码到期日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13067529/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com