Freigeben über


Benutzererstellung mit dem ADSI-LDAP-Anbieter

Mit dem ADSI LDAP-Anbieter können Sie nur ein globales Benutzerkonto erstellen. Lokale Konten befinden sich in der SAM-Datenbank und müssen mit dem WinNT-Anbieter erstellt werden. Weitere Informationen zum Erstellen eines Benutzerobjekts mit dem WinNT-Anbieter finden Sie unter WinNT-Benutzerobjekt.

So erstellen Sie ein Benutzerobjekt

  1. Binden Sie an den Container, in dem sich das Benutzerobjekt befindet, und rufen Sie entweder die IADsContainer - oder IDirectoryObject-Schnittstelle für den Container ab.

  2. Verwenden Sie die IADsContainer.Create - oder IDirectoryObject::CreateDSObject-Methode , um das Benutzerobjekt zu erstellen.

  3. Die zum Erstellen eines Benutzerobjekts erforderlichen Mindestattribute hängen vom verwendeten Verzeichnisdienst ab. Weitere Informationen zum Erstellen eines Active Directory-Benutzers finden Sie unter Erstellen eines Benutzers.

  4. Wenn die IADsContainer-Schnittstelle verwendet wird, wird das neue Objekt erst erstellt, wenn die IADs.SetInfo-Methode aufgerufen wird.

    Wenn die IDirectoryObject-Schnittstelle verwendet wird, wird das neue Objekt erstellt, wenn die CreateDSObject-Methode aufgerufen wird. Die Mindestattribute, einschließlich der objectClass, müssen im ADS_ATTR_INFO Array angegeben werden, das an die CreateDSObject-Methode übergeben wird.

Beispiel 1

Im folgenden Codebeispiel wird ein Benutzerkonto mit den Standardattributen erstellt.

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

Beispiel 2

Im folgenden Codebeispiel wird ein Benutzerkonto mit den Standardattributen erstellt. Aus Gründen der Kürze wird die Fehlerüberprüfung ausgelassen.

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