![]() |
Datenbank: Active Directory • Zugriff über: ADSI
Attribute im AD löschen
Hallo!
Ich schreibe gerade eine Anwendung zur Benutzerverwaltung. Dazu greife ich auch auf das AD zu und arbeite mit ein paar Userdaten. Das Thema Active Directory ist neu für mich, doch ich habe hier und unter ![]() Soweit klappt auch alles. Ich kann AD-Werte lesen und auch schreiben. Problem: Ich bekomme es einfach nicht hin, Werte zu LÖSCHEN (auf NULL zu setzen)!!! Speziell geht es um die Attribute "homeDrive", "HomeDirectory" und "LoginScript". Aber selbst "FirstName" und andere kann ich nur ändern/setzen, aber nicht löschen! Hier der Code zum Setzen der Werte. (Ich doktor da immer noch rum)
Delphi-Quellcode:
Nach allem, was ich bisher gefunden habe, müsste das mit PUTEX eigentlich funktionieren.
procedure TfrmScript.btnUpdateUserSettingsClick(Sender: TObject);
var User : IDispatch; begin if Failed(ADsGetObject(edtADsPath.Text, IID_IADsUser, user)) then Exit; with (User as IADsUser) do begin try FirstName := edtFirstName.Text; except PutEx(ADS_PROPERTY_CLEAR, 'FirstName', Null); end; try LastName := edtLastName.Text; except end; try FullName := edtFullName.Text; put('displayName', edtFullName.Text); except end; try if (cbHomeDrive.ItemIndex = 0) or (cbHomeDrive.ItemIndex = -1) then PutEx(ADS_PROPERTY_CLEAR, 'homeDrive', Null) else put('homeDrive', cbHomeDrive.Text); except PutEx(ADS_PROPERTY_CLEAR, 'homeDrive', Null); end; try if edtHomeDirectory.Text = '' then PutEx(ADS_PROPERTY_CLEAR, 'HomeDirectory', NULL) else HomeDirectory := edtHomeDirectory.Text; except end; try if cbLoginScripts.Text = '' then putex(ADS_PROPERTY_CLEAR, 'LoginScript', 0) else LoginScript := cbLoginScripts.Text; except end; try AccountDisabled := chbDisabled.Checked; except end; (* Speichern *) try SetInfo; except end; end; end; Fehlermeldungen bekomme ich auch nicht, aber es ändert sich auch nix. Langsam bin ich am Verzweifeln :wall: . Ich hoffe, ihr könnt mir helfen!!!! |
Re: Attribute im AD löschen
ich denke mal, sowas wie
Delphi-Quellcode:
sollte funktionieren
XYZ := '';
|
Re: Attribute im AD löschen
Leider überhaupt nicht.
Wenn ich einen leeren String übermittele, wird das so gesehen ignoriert und der alte Wert ist unverändert da. |
Re: Attribute im AD löschen
NULL heißt in Pascal nil, vielleicht liegt es daran.
|
Re: Attribute im AD löschen
Der Typ muss OleVariant sein.
NULL nimmt er an - NIL ist Pointer und erzeugt Fehlermeldung. Trotzdem schon mal danke für die raschen Antworten! |
Re: Attribute im AD löschen
Hallo,
PutEx() ist schon in Ordnung, schreibt aber die Daten nur in den property cache. Ohne nachfolgendes SetInfo() bleibt alles beim alten:
Delphi-Quellcode:
Frohe Ostern
begin
// ... if Succeeded(ads.QueryInterface(IID_IADsUser, user)) then begin user.PutEx(ADS_PROPERTY_CLEAR, attr, null); try user.SetInfo; Result := True; except on E: Exception do Log(S_ERROR + E.Message); end; end; // ... end; |
Re: Attribute im AD löschen
Hallo Marabu,
vielen Dank für die Antwort! (is klar, gerade hab ich's auch selber rausgefunden*g*) Stimmt auffallend: Man muss wirklich immer das SETINFO aufrufen und schon klappt's! :hello: Warum das beim Ändern sich so anders verhält ist mir zwar nicht so ganz ersichtlich, aber was soll's?! Jedenfalls allen nochmals vielen Dank für die rasche Unterstützung!!! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz