c++ win32 APIを使ってパスワード有効期限ダイアログボックスを表示したい...
私は System.directoryservice 名前空間を使用してそれを行いました...
しかし、今はWin32 APIが必要です..
パスワードの有効期限を取得する機能はありますか?
前もって感謝します
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;
}
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 の例を参照) を使用することをお勧めします。