Announcement

Collapse
No announcement yet.

ADSI - User in speziellem Verzeichnis anlegen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ADSI - User in speziellem Verzeichnis anlegen

    Hallo zusammen,
    ich habe das Beispiel unten von Herrn Kosch verwendet um über Delphi auf mein AD zuzugreifen. Das funktioniert auch soweit. Leider werden dabei aber alle neuen User in das Standardverzeichnis "Users" des AD angelegt, ich möchte aber in ein anderes Verzeichnis anlegen.
    Da ich vermutet habe, dass dies nicht mit dem WINNT Präfix geht, wollte ich dies über LDAP lösen, nur leider erscheint dann die Fehlermeldung, wenn ich auf den Button AddUser klicke: "Es wurde eine ungültige dn-Syntax anngegeben".
    Ich habe dafür anstatt
    swObj := WinNT://"Domäne" folgendes versucht:
    swObj := LDAP://CN=Test,DC=xx,DC=xxxxxxxx,DC=xx


    Es wäre nett, wenn mir jemand weiterhelfen könnte.
    Vielen Dank.

    Code:
    function ADsGetObject(lpszPathName: PWideChar;
                          const riid: TIID;
                          out obj): HResult; stdcall; external 'activeds.dll';
    
    
    procedure TForm1.ButtonConnectClick(Sender: TObject);
    var
      swObj    : WideString;
    
    begin
    
      swObj := EditObj.Text;  //WinNT://[Domäne] 
    
    
      OleCheck(ADsGetObject(PWideChar(swObj), IID_IADsContainer, FADSCont));
    
      StatusBar1.SimpleText := 'ADsGetObject war erfolgreich.';
    
      ButtonRefresh.Enabled := True;
    
      ButtonAddUser.Enabled := True;
    
    end;
    
    
    
    procedure TForm1.ButtonRefreshClick(Sender: TObject);
    var
      sUser    : String;
      aEnum    : IEnumVariant;
      vObj     : OLEVariant;
      aADs     : IAds;
      aADSUser : IADsUser;
      iCelt    : LongWord;
    
    begin
    
      ListBoxUser.Items.Clear;
      aEnum := FADSCont._NewEnum as IEnumVariant;
    
      while (aEnum.Next(1, vObj, iCelt) = S_OK) do
      begin
        aADs := IUnknown(vObj) as IAds;
    
        if aADs.Class_ = 'User' then
        begin
    
            aADSUser := aADs as IAdsUser;
    
            sUser := Format('%s -> (%s)', [aADSUser.Name {+ Chr(9)},aADSUser.FullName]);
    
            ListBoxUser.Items.Add(sUser);
    
        end;
    
      end;
      showMessage('fertig');
      StatusBar1.SimpleText := 'Refresh erfolgreich';
    
    end;
    
    
    
    procedure TForm1.ButtonAddUserClick(Sender: TObject);
    
    var
    
      swNewUserName : WideString;
    
      swDescription : WideString;
    
      aADSUser      : IADsUser;
    
    begin
    
      swNewUserName := EditNewUser.Text;
    
      swDescription := 'Benutzer wurde von ADSI_5.EXE anlegt.';
    
      aADSUser := FADSCont.Create('user', swNewUserName) as IADsUser;
      aADSUser.SetPassword('12345');
      aADSUser.Set_Description(swDescription);
    
      aADSUser.SetInfo;
    
      ButtonRefreshClick(self);
    
    end;
    Viele Grüße
    jack

  • #2
    Habs hinbekommen.
    Man muss nach dieser Zeile:
    Code:
    aADSUser := FADSCont.Create('user', swNewUserName) as IADsUser;
    Diese Zeile einfügen:
    Code:
     aADSUser.Put('sAMAccountName',swNewUserName);
    Dann funktionierts.

    Comment


    • #3
      Vielen Dank dass Du noch die Lösung gepostet hast

      Comment

      Working...
      X