Condividi tramite


Creazione dell'utente con il provider LDAP ADSI

Con il provider LDAP ADSI è possibile creare solo un account utente globale. Gli account locali risiedono nel database SAM e devono essere creati usando il provider WinNT. Per altre informazioni sulla creazione di un oggetto utente con il provider WinNT, vedere Oggetto utente WinNT.

Per creare un oggetto utente

  1. Eseguire l'associazione al contenitore in cui risiederà l'oggetto utente e ottenere l'interfaccia IADsContainer o IDirectoryObject per il contenitore.

  2. Usare il metodo IADsContainer.Create o IDirectoryObject::CreateDSObject per creare l'oggetto utente.

  3. Gli attributi minimi necessari per creare un oggetto utente dipendono dal servizio directory usato. Per altre informazioni sulla creazione di un utente di Active Directory, vedere Creazione di un utente.

  4. Se viene utilizzata l'interfaccia IADsContainer, il nuovo oggetto non viene effettivamente creato fino a quando non viene chiamato il metodo IADs.SetInfo.

    Se viene utilizzata l'interfaccia IDirectoryObject, il nuovo oggetto viene creato quando viene chiamato il metodo CreateDSObject. Gli attributi minimi, incluso objectClass, devono essere specificati nella matrice ADS_ATTR_INFO passata al metodo CreateDSObject.

Esempio 1

Nell'esempio di codice seguente viene creato un account utente con gli attributi predefiniti.

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

Esempio 2

Nell'esempio di codice seguente viene creato un account utente con gli attributi predefiniti. Per brevità, il controllo degli errori viene omesso.

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