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 プロバイダーは、3 つのプロセスのいずれかを使用してパスワードを設定します。iPlanet などのサードパーティの LDAP ディレクトリでは、このパスワード認証プロセスは使用されません。 方法は、ネットワーク構成によって異なる場合があります。 パスワードの設定を試みる順序は次のとおりです。
- 最初に、LDAP プロバイダーは 128 ビット SSL 接続経由で LDAP の使用を試みます。 LDAP SSL が正常に動作するには、LDAP サーバーに適切なサーバー認証証明書がインストールされている必要があり、ADSI コードを実行しているクライアントは、それらの証明書を発行した機関を信頼する必要があります。 サーバーとクライアントの両方が 128 ビット暗号化をサポートしている必要があります。
- 次に、SSL 接続が失敗した場合、LDAP プロバイダーは Kerberos の使用を試みます。
- 3 番目に、Kerberos が失敗した場合、LDAP プロバイダーは NetUserSetInfo API 呼び出しを試みます。 以前のリリースでは、ADSI は、IADsOpenDSObject::OpenDSObject または ADsOpenObject の呼び出しで指定されたセキュリティ コンテキストではなく、スレッドが実行されていたセキュリティ コンテキストで NetUserSetInfo を呼び出しました。 以降のリリースでは、これは変更され、ADSI LDAP プロバイダーが NetUserSetInfo を呼び出すときに OpenDSObject 呼び出しで指定されたユーザーを偽装するようにしました。
例
次のコード例は、ユーザー パスワードを設定するアクセス許可がある場合に設定する方法を示しています。
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 |