Compartilhar via


Criação de usuário com o provedor LDAP ADSI

Com o provedor LDAP ADSI, você só pode criar uma conta de usuário global. As contas locais residem no banco de dados SAM e devem ser criadas usando o provedor WinNT. Para obter mais informações sobre como criar um objeto de usuário com o provedor WinNT, consulte Objeto de usuário WinNT.

Para criar um objeto de usuário

  1. Vincule-se ao contêiner onde o objeto de usuário residirá e obtenha a interface IADsContainer ou IDirectoryObject para o contêiner.

  2. Use o método IADsContainer.Create ou IDirectoryObject::CreateDSObject para criar o objeto de usuário.

  3. Os atributos mínimos necessários para criar um objeto de usuário dependerão do serviço de diretório usado. Para obter mais informações sobre como criar um usuário do Active Directory, consulte Criando um usuário.

  4. Se a interface IADsContainer for usada, o novo objeto não será realmente criado até que o método IADs.SetInfo seja chamado.

    Se a interface IDirectoryObject for usada, o novo objeto será criado quando o método CreateDSObject for chamado. Os atributos mínimos, incluindo o objectClass, devem ser especificados na matriz ADS_ATTR_INFO passada para o método CreateDSObject.

Exemplo 1

O exemplo de código a seguir cria uma conta de usuário com os atributos padrão.

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

Exemplo 2

O exemplo de código a seguir cria uma conta de usuário com os atributos padrão. Por brevidade, a verificação de erros é omitida.

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