Megosztás a következőn keresztül:


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