Partager via


Création d’utilisateurs avec le fournisseur LDAP ADSI

Avec le fournisseur LDAP ADSI, vous pouvez uniquement créer un compte d’utilisateur global. Les comptes locaux résident dans la base de données SAM et doivent être créés à l’aide du fournisseur WinNT. Pour plus d’informations sur la création d’un objet utilisateur avec le fournisseur WinNT, consultez Objet utilisateur WinNT.

Pour créer un objet utilisateur

  1. Liez au conteneur où réside l’objet utilisateur et obtenez l’interface IADsContainer ou IDirectoryObject pour le conteneur.

  2. Utilisez la méthode IADsContainer.Create ou IDirectoryObject::CreateDSObject pour créer l’objet utilisateur.

  3. Les attributs minimaux requis pour créer un objet utilisateur dépendent du service d’annuaire utilisé. Pour plus d’informations sur la création d’un utilisateur Active Directory, consultez Création d’un utilisateur.

  4. Si l’interface IADsContainer est utilisée, le nouvel objet n’est pas réellement créé tant que la méthode IADs.SetInfo n’est pas appelée.

    Si l’interface IDirectoryObject est utilisée, le nouvel objet est créé lorsque la méthode CreateDSObject est appelée. Les attributs minimaux, y compris objectClass, doivent être spécifiés dans le tableau ADS_ATTR_INFO passé à la méthode CreateDSObject .

Exemple 1

L’exemple de code suivant crée un compte d’utilisateur avec les attributs par défaut.

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

Exemple 2

L’exemple de code suivant crée un compte d’utilisateur avec les attributs par défaut. Par souci de concision, la vérification des erreurs est omise.

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