Compartir a través de


Creación de usuarios con el proveedor LDAP adsi

Con el proveedor LDAP ADSI, solo puede crear una cuenta de usuario global. Las cuentas locales residen en la base de datos SAM y deben crearse con el proveedor winNT. Para obtener más información sobre cómo crear un objeto de usuario con el proveedor WinNT, vea Objeto de usuario de WinNT.

Para crear un objeto de usuario

  1. Enlazar al contenedor donde residirá el objeto de usuario y obtener la interfaz IADsContainer o IDirectoryObject para el contenedor.

  2. Use el método IADsContainer.Create o IDirectoryObject::CreateDSObject para crear el objeto de usuario.

  3. Los atributos mínimos necesarios para crear un objeto de usuario dependerán del servicio de directorio usado. Para obtener más información sobre cómo crear un usuario de Active Directory, consulte Creación de un usuario.

  4. Si se usa la interfaz IADsContainer , el nuevo objeto no se crea realmente hasta que se llama al método IADs.SetInfo .

    Si se usa la interfaz IDirectoryObject , se crea el nuevo objeto cuando se llama al método CreateDSObject . Los atributos mínimos, incluido objectClass, deben especificarse en la matriz ADS_ATTR_INFO pasada al método CreateDSObject .

Ejemplo 1

En el ejemplo de código siguiente se crea una cuenta de usuario con los atributos predeterminados.

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

Ejemplo 2

En el ejemplo de código siguiente se crea una cuenta de usuario con los atributos predeterminados. Para mayor brevedad, se omite la comprobación de errores.

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