Поделиться через


Создание пользователей с помощью поставщика LDAP ADSI

С помощью поставщика LDAP ADSI можно создать только глобальную учетную запись пользователя. Локальные учетные записи находятся в базе данных SAM и должны быть созданы с помощью поставщика WinNT. Дополнительные сведения о создании объекта пользователя с помощью поставщика WinNT см. в разделе "Объект пользователя WinNT".

Создание объекта пользователя

  1. Привязка к контейнеру, в котором будет находиться объект пользователя, и получите интерфейс IADsContainer или IDirectoryObject для контейнера.

  2. Используйте метод IADsContainer.Create или IDirectoryObject::CreateDSObject для создания объекта пользователя.

  3. Минимальные атрибуты, необходимые для создания пользовательского объекта, будут зависеть от используемой службы каталогов. Дополнительные сведения о создании пользователя Active Directory см. в разделе "Создание пользователя".

  4. Если используется интерфейс IADsContainer, новый объект не создается до вызова метода IADs.SetInfo.

    Если используется интерфейс IDirectoryObject, при вызове метода CreateDSObject создается новый объект. Минимальные атрибуты, включая objectClass, должны быть указаны в массиве ADS_ATTR_INFO, переданном методу CreateDSObject.

Пример 1

В следующем примере кода создается учетная запись пользователя с атрибутами по умолчанию.

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

Пример 2

В следующем примере кода создается учетная запись пользователя с атрибутами по умолчанию. Для краткости ошибка проверка пропускается.

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