次の方法で共有


ADSI LDAP プロバイダーを使用したユーザーの作成

ADSI LDAP プロバイダーでは、グローバル ユーザー アカウントのみを作成できます。 ローカル アカウントは SAM データベースに存在し、WinNT プロバイダーを使用して作成する必要があります。 WinNT プロバイダーを使用したユーザー オブジェクトの作成の詳細については、「WinNT ユーザー オブジェクト 参照してください。

ユーザー オブジェクト を作成するには

  1. ユーザー オブジェクトが存在するコンテナーにバインドし、IADsContainer またはコンテナーの IDirectoryObjectインターフェイス取得します。

  2. IADsContainer.Create または IDirectoryObject::CreateDSObjectメソッドをして、ユーザー オブジェクトを作成します。

  3. ユーザー オブジェクトの作成に必要な最小属性は、使用されるディレクトリ サービスによって異なります。 Active Directory ユーザーの作成の詳細については、「ユーザーの作成」を参照してください。

  4. IADsContainer インターフェイスを使用する場合、IADs.SetInfo メソッドが呼び出されるまで、新しいオブジェクトは実際には作成されません。

    IDirectoryObject インターフェイスを使用する場合は、CreateDSObject メソッドが呼び出されたときに新しいオブジェクトが作成されます。 objectClassを含む最小属性は、CreateDSObject メソッドに渡される ADS_ATTR_INFO 配列で指定する必要があります。

例 1

次のコード例では、既定の属性を持つユーザー アカウントを作成します。

Dim ou As IADs
Dim usr as IADsUser

On Error GoTo Cleanup

Set ou = GetObject("LDAP://OU=Finance,DC=Fabrikam,DC=COM")
Set usr = ou.Create("user", "cn=Jeff Smith")
usr.Put "samAccountName", "jeffsmith"
usr.SetInfo

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

例 2

次のコード例では、既定の属性を持つユーザー アカウントを作成します。 簡潔にするために、エラー チェックは省略されます。

#include <activeds.h>

int main()
{
   HRESULT hr = CoInitialize(NULL);

   IADsContainer *pCont;
   IADsUser *pUser;

   LPWSTR adsPath = L"LDAP://serv1/CN=Users,dc=Fabrikam,dc=com";
   LPWSTR usrPass = NULL;
   LPWSTR usrName = NULL;

   // Add code to securely get the user name and password or leave
   // as NULL to use the current security context.

   hr = ADsOpenObject(adsPath, 
                      usrName,
                      usrPass,
                      ADS_SECURE_AUTHENTICATION,
                      IID_IADsContainer,
                      (void**)&pCont);

   IDispatch *pDisp;
   hr = pCont->Create(CComBSTR("user"), CComBSTR("cn=Jeff Smith"), &pDisp);
   pCont->Release();

   hr = pDisp->QueryInterface(IID_IADsUser,(void**)&pUser);
   pDisp->Release();

   VARIANT var;
   VariantInit(&var);
   V_BSTR(&var) = L"jeffsmith";
   V_VT(&var)=VT_BSTR;
   hr = pUser->Put(CComBSTR("samAccountName"), var);

   hr = pUser->SetInfo();

   VariantClear(&var);
   pUser->Release();

   CoUninitialize();

   return 0;
}