AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Attribute im AD löschen
Thema durchsuchen
Ansicht
Themen-Optionen

Attribute im AD löschen

Ein Thema von Kleffi · begonnen am 24. Mär 2008 · letzter Beitrag vom 24. Mär 2008
Antwort Antwort
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, 12: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
Benutzerbild von dajuhsa
dajuhsa

Registriert seit: 20. Apr 2007
397 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Attribute im AD löschen

  Alt 24. Mär 2008, 12:53
ich denke mal, sowas wie
XYZ := ''; sollte funktionieren
das Essen ist wie das Internet - Downstream ist immer angenehmer als Upstream
-
Warum missbraucht die ganze Programmierwelt Images als Paintboxen
  Mit Zitat antworten Zitat
Benutzerbild von Kleffi
Kleffi

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

Re: Attribute im AD löschen

  Alt 24. Mär 2008, 12:56
Leider überhaupt nicht.
Wenn ich einen leeren String übermittele, wird das so gesehen ignoriert und der alte Wert ist unverändert da.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Attribute im AD löschen

  Alt 24. Mär 2008, 12:58
NULL heißt in Pascal nil, vielleicht liegt es daran.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Kleffi
Kleffi

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

Re: Attribute im AD löschen

  Alt 24. Mär 2008, 13:02
Der Typ muss OleVariant sein.
NULL nimmt er an - NIL ist Pointer und erzeugt Fehlermeldung.

Trotzdem schon mal danke für die raschen Antworten!
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Attribute im AD löschen

  Alt 24. Mär 2008, 13:31
Hallo,

PutEx() ist schon in Ordnung, schreibt aber die Daten nur in den property cache. Ohne nachfolgendes SetInfo() bleibt alles beim alten:

Delphi-Quellcode:
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;
Frohe Ostern
  Mit Zitat antworten Zitat
Benutzerbild von Kleffi
Kleffi

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

Re: Attribute im AD löschen

  Alt 24. Mär 2008, 13:46
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!

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!!!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz