Fiókzárolás (WinNT-szolgáltató)
Ha túllépi a sikertelen bejelentkezési kísérletek számát, a felhasználói fiók zárolva lesz a lockoutDuration attribútum által megadott számú percre. A IADsUser.IsAccountLocked tulajdonság láthatóan a felhasználói fiókok zárolási állapotának olvasására és módosítására használható tulajdonság, a WinNT ADSI-szolgáltató azonban korlátozásokkal korlátozza az IsAccountLocked tulajdonság használatát.
A fiók zárolási állapotának alaphelyzetbe állítása
A WinNT-szolgáltató használatakor az IsAccountLocked tulajdonság csak a HAMIS állítható be, amely feloldja a fiókot. Az IsAccountLocked tulajdonság TRUE beállítása sikertelen lesz. Csak a rendszer zárolhat egy fiókot.
Az alábbi példakód bemutatja, hogyan használható a Visual Basic az ADSI-vel egy felhasználói fiók zárolásának feloldására.
Public Sub UnlockAccount(AccountDN As String)
Dim usr As IADsUser
' Bind to the user account.
Set usr = GetObject("WinNT://" + AccountDN)
' Set the IsAccountLocked property to False
usr.IsAccountLocked = False
' Flush the cached attributes to the server.
usr.SetInfo
End Sub
Az alábbi példakód bemutatja, hogyan használható a C++ az ADSI-vel egy felhasználói fiók zárolásának feloldására.
HRESULT UnlockAccount(LPCWSTR pwszUserDN)
{
if(!pwszUserDN)
{
return E_INVALIDARG;
}
// Build the ADsPath.
CComBSTR sbstr = "WinNT://";
sbstr += pwszUserDN;
HRESULT hr;
CComPtr<IADsUser> spADsUser;
// Bind to the object.
hr = ADsOpenObject(sbstr,
NULL,
NULL,
ADS_SECURE_AUTHENTICATION,
IID_IADsUser,
(void**)&spADsUser);
if(S_OK != hr)
{
return hr;
}
// Set the IsAccountLocked property to FALSE;
hr = spADsUser->put_IsAccountLocked(VARIANT_FALSE);
// Commit the changes to the server.
hr = spADsUser->SetInfo();
return hr;
}
A fiók zárolási állapotának olvasása
A WinNT-szolgáltatónál az IsAccountLocked tulajdonsággal állapítható meg, hogy egy fiók zárolva van-e. Ha egy fiók ki van zárva, az IsAccountLocked tulajdonság IGAZfog tartalmazni. Ha egy fiók nincs zárolva, a IsAccountLocked tulajdonság HAMIStartalmaz.
Az alábbi példakód bemutatja, hogyan használható a Visual Basic az ADSI-vel annak megállapítására, hogy egy fiók zárolva van-e.
Public Function IsAccountLocked(AccountDN As String) As Boolean
Dim oUser As IADsUser
' Bind to the object.
Set oUser = GetObject("WinNT://" + AccountDN)
' Get the IsAccountLocked property.
IsAccountLocked = oUser.IsAccountLocked
End Function
Az alábbi példakód bemutatja, hogyan használható a C++ az ADSI-vel annak megállapítására, hogy egy fiók zárolva van-e.
HRESULT IsAccountLocked(LPCWSTR pwszUserDN, BOOL *pfLocked)
{
if(!pwszUserDN || !pfLocked)
{
return E_INVALIDARG;
}
*pfLocked = FALSE;
// Build the ADsPath.
CComBSTR sbstr = "WinNT://";
sbstr += pwszUserDN;
HRESULT hr;
CComPtr<IADsUser> spADsUser;
// Bind to the object.
hr = ADsOpenObject(sbstr,
NULL,
NULL,
ADS_SECURE_AUTHENTICATION,
IID_IADsUser,
(void**)&spADsUser);
if(S_OK != hr)
{
return hr;
}
VARIANT_BOOL vfLocked;
hr = spADsUser>get_IsAccountLocked(&vfLocked);
if(S_OK != hr)
{
return hr;
}
*pfLocked = (vfLocked != 0);
return hr;
}