IADsUser::SetPassword-Methode (iads.h)
Die IADsUser::SetPassword-Methode legt das Benutzerkennwort auf einen angegebenen Wert fest. Für den LDAP-Anbieter muss das Benutzerkonto erstellt und im zugrunde liegenden Verzeichnis mit IADs::SetInfo gespeichert worden sein, bevor IADsUser::SetPassword aufgerufen wird.
Mit dem WinNT-Anbieter können Sie jedoch das Kennwort für ein neu erstelltes Benutzerobjekt festlegen, bevor SetInfo aufgerufen wird. Dadurch wird sichergestellt, dass Sie Kennwörter erstellen, die der Systemkennwortrichtlinie entsprechen, bevor Sie das Benutzerkonto erstellen.
Syntax
HRESULT SetPassword(
BSTR NewPassword
);
Parameter
NewPassword
Ein BSTR , der das neue Kennwort enthält.
Rückgabewert
Diese Methode unterstützt die Standardrückgabewerte, einschließlich S_OK. Weitere Rückgabewerte finden Sie unter ADSI-Fehlercodes.
Hinweise
Der LDAP-Anbieter für Active Directory verwendet einen von drei Prozessen, um das Kennwort festzulegen. LDAP-Verzeichnisse von Drittanbietern wie iPlanet verwenden diesen Kennwortauthentifizierungsprozess nicht. Die Methode kann je nach Netzwerkkonfiguration variieren. Versuche, das Kennwort festzulegen, erfolgen in der folgenden Reihenfolge:
- Zunächst versucht der LDAP-Anbieter, LDAP über eine 128-Bit-SSL-Verbindung zu verwenden. Damit LDAP-SSL erfolgreich ausgeführt werden kann, muss auf dem LDAP-Server das entsprechende Serverauthentifizierungszertifikat installiert sein, und die Clients, auf denen der ADSI-Code ausgeführt wird, müssen der Autorität vertrauen, die diese Zertifikate ausgestellt hat. Sowohl der Server als auch der Client müssen die 128-Bit-Verschlüsselung unterstützen.
- Wenn die SSL-Verbindung nicht erfolgreich ist, versucht der LDAP-Anbieter, Kerberos zu verwenden.
- Drittens: Wenn Kerberos nicht erfolgreich ist, versucht der LDAP-Anbieter einen NetUserSetInfo-API-Aufruf . In früheren Versionen hat ADSI netUserSetInfo im Sicherheitskontext aufgerufen, in dem der Thread ausgeführt wurde, und nicht im Sicherheitskontext, der im Aufruf von IADsOpenDSObject::OpenDSObject oder ADsOpenObject angegeben wurde. In späteren Versionen wurde dies geändert, sodass der ADSI-LDAP-Anbieter die Identität des im OpenDSObject-Aufruf angegebenen Benutzers angibt, wenn netUserSetInfo aufgerufen wird.
Beispiele
Im folgenden Codebeispiel wird gezeigt, wie Sie das Benutzerkennwort festlegen, wenn Sie über die entsprechende Berechtigung verfügen.
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
Im folgenden Codebeispiel wird gezeigt, wie Sie das Benutzerkennwort festlegen, wenn Sie über die entsprechende Berechtigung verfügen.
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;
}
Anforderungen
Unterstützte Mindestversion (Client) | Windows Vista |
Unterstützte Mindestversion (Server) | Windows Server 2008 |
Zielplattform | Windows |
Kopfzeile | iads.h |
DLL | Activeds.dll |