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.
Viele Grüße
jack
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;
jack
Comment