IADsUser::SetPassword 方法 (iads.h)

IADsUser::SetPassword方法會將使用者密碼設定為指定的值。 針對 LDAP 提供者,必須在呼叫IADsUser::SetPassword之前,使用IADs::SetInfo建立並儲存使用者帳戶。

不過,WinNT 提供者可讓您在呼叫 SetInfo之前,先在新建立的使用者物件上設定密碼。 這可確保您在建立使用者帳戶之前,先建立符合系統密碼原則的密碼。

語法

HRESULT SetPassword(
  BSTR NewPassword
);

參數

NewPassword

包含新密碼的 BSTR

傳回值

這個方法支援標準傳回值,包括 S_OK。 如需其他傳回值,請參閱 ADSI 錯誤碼

備註

Active Directory 的 LDAP 提供者會使用三個程式之一來設定密碼;iPlanet 之類的協力廠商 LDAP 目錄不會使用此密碼驗證程式。 方法可能會根據網路組態而有所不同。 嘗試以下列順序設定密碼:

  • 首先,LDAP 提供者會嘗試透過 128 位 SSL 連線使用 LDAP。 若要讓 LDAP SSL 順利運作,LDAP 伺服器必須安裝適當的伺服器驗證憑證,而且執行 ADSI 程式碼的用戶端必須信任發行這些憑證的授權單位。 伺服器和用戶端都必須支援 128 位加密。
  • 其次,如果 SSL 連線失敗,LDAP 提供者會嘗試使用 Kerberos。
  • 第三,如果 Kerberos 不成功,LDAP 提供者會嘗試 NetUserSetInfo API 呼叫。 在舊版中,ADSI 線上程執行的安全性內容中呼叫 NetUserSetInfo ,而不是呼叫 IADsOpenDSObject::OpenDSObjectADsOpenObject中指定的安全性內容。 在更新版本中,這已變更,因此 ADSI LDAP 提供者會在呼叫 NetUserSetInfo 時模擬 OpenDSObject 呼叫中指定的使用者。
在 Active Directory 中,呼叫端必須具有重 設密碼 延伸控制項存取權限,才能使用此方法設定密碼。

範例

下列程式碼範例會示範如何設定使用者密碼,如果您有權這麼做。

Dim usr As IADsUser
Dim szPassword As String
On Error GoTo Cleanup

' Add code to securely get the password.

Set usr = GetObject("LDAP://MyLdapSvr/CN=JeffSmith,DC=Fabrikam")
usr.SetPassword szPassword

Cleanup:
    If (Err.Number<>0) Then
        MsgBox("An error has occurred. " & Err.Number)
    End If
    Set usr = Nothing

下列程式碼範例會示範如何設定使用者密碼,如果您有權這麼做。

HRESULT SetPassword(IADsUser *pUser, BSTR password)
{
    HRESULT hr=S_OK;
    if(!pUser) { return E_FAIL;}
    hr = pUser->SetPassword(password);
    if (hr == S_OK) printf("User password has been set");
    pUser->Release();
    return hr;
}

需求

   
最低支援的用戶端 Windows Vista
最低支援的伺服器 Windows Server 2008
目標平台 Windows
標頭 iads.h
Dll Activeds.dll

另請參閱

ADSI 錯誤碼

IADs::SetInfo

IADsMembers

IADsServiceOperations

IADsUser

IADsUser 屬性方法

NetUserSetInfo