Einzelnen Beitrag anzeigen

Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
934 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: Active Directory Benutzer anlegen

  Alt 28. Mär 2008, 12:51
Hi,


ist nicht schön. Wie ich eben gesehen habe (21:08 ; 28.03.08 ), erst einmal herzlich Willkommen in der DP!

Versuchen wir es mal so:
Delphi-Quellcode:
function CreateUser(ADsPath : WideString; // zB: 'LDAP://OU=NeueBenutzer,DC=test,DC=Local,DC=net' <- dies ist der Ort wo der User angelegt wird
                    FullName : WideString;
                    LastName : WideString;
                    FirstName : WideString;
                    UserPrinzipalName : WideString;
                    sAMAccountName : WideString;
                    Password : WideString;
                    var distinguishedName : WideString; // Rückgabe wird für weitere 'vereinfachte' Aktionen gebraucht
                    AccountDisabled : Boolean) : Boolean;
var
  destOU : IADsContainer; // Eine OU ist ein Container
  usr : IADsUser; // User-Object
begin
  destOU:= GetObject(ADsPath) As IADsContainer; // Verbindung zum Container herstellen
  try
    usr:= destOU.Create('user', 'CN=' + FullName) As IADsUser; // neues 'User'-Object erstellen, so etwas wie 'Form := TForm.Create(nil)'
    usr.Put('sAMAccountName', sAMAccountName); // Mindestents diese Werte übergeben
    usr.Put('userPrincipalName', UserPrinzipalName);
    usr.Put('givenName', FirstName);
    usr.Put('sn', LastName);
    usr.Put('displayName', FullName);
    usr.SetInfo; // Werte speichern
    usr.SetPassword(UserDat.Password); // Erst jetzt kann das Passwort gesetzt werden
    usr.SetInfo; // Passwort speichern
    distinguishedName := usr.Get('distinguishedName'); // distinguishedName holen
    usr.AccountDisabled:= usr.AccountDisabled; // je nachdem Konto sperren oder aktivieren
    Result := true;
  except
    Result := false;
    on e : Exception do // Falls es zu Fehlern kommt, anzeigen
      ShowMessage(e.Message);
  end;
end;

Die Routine sollte nun genau das machen wofür sie gedacht ist, einen Benutzer anlegen.
Einzige Voraussetzung: Übergabe gültiger Werte (der ADsPath muss exestieren).

Was sind 'vereinfachte' Aktionen? zB: Änderung des Familiennamens nach Heirat.
Delphi-Quellcode:
function ChangeLastName(ADspath : WideString; NewLastName : WideString) : Boolean;
var
  destOU : IADsContainer; // Eine OU ist ein Container
  usr : IADsUser; // User-Object
begin
   user := GetObject(ADsPath) As IADsUser;
   try
     user.PutEx(ADS_PROPERTY_CLEAR, 'sn', Null);
     user.SetInfo;
     user.Put('sn', NewLastName);
     user.SetInfo;
     Result := true;
  except
    Result := false;
    on e : Exception do // Falls es zu Fehlern kommt, anzeigen
      ShowMessage(e.Message);
  end;
end;
Aufruf: ChangeLastName(distinguishedName, 'Meyer');

Was die Freigabe der Interfaceobjecte angeht, Delphi kümmert sich darum.
Die Referenzen werden verworfen, sobald sie nicht mehr benötigt werden.
Um zu wissen was was ist, also 'sn' = Nachname, siehe MSDN.


Gruß
  Mit Zitat antworten Zitat