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 de objeto de usuário WinNT.

Para criar um objeto de usuário

  1. Associe ao contêiner em que o objeto de usuário residirá e obtenha o IADsContainer ou interface de 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 interfaceIADsContainerfor usada, o novo objeto não será realmente criado até que o método IADs.SetInfo seja chamado.

    Se a interfaceIDirectoryObjectfor usada, o novo objeto será criado quando o método CreateDSObject for chamado. Os atributos mínimos, incluindo oobjectClass, 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. Para fins de 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;
}