Thema: Delphi Attribute im AD löschen

Einzelnen Beitrag anzeigen

Benutzerbild von Kleffi
Kleffi

Registriert seit: 24. Mär 2008
4 Beiträge
 
Delphi 7 Professional
 
#1

Attribute im AD löschen

  Alt 24. Mär 2008, 13:44
Datenbank: Active Directory • Zugriff über: ADSI
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!!!!
  Mit Zitat antworten Zitat