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
agnisoft einige hilfreiche Beiträge gefunden.
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:
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;
Nach allem, was ich bisher gefunden habe, müsste das mit PUTEX eigentlich funktionieren.
Fehlermeldungen bekomme ich auch nicht, aber es ändert sich auch nix.
Langsam bin ich am Verzweifeln
.
Ich hoffe, ihr könnt mir helfen!!!!