Einzelnen Beitrag anzeigen

Alter Mann

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

Re: LDAP/WINNT - versuche die Primary Group eines AD Users h

  Alt 7. Mai 2010, 18:48
Hallo cherry,

nicht gleich Sauer sein.

Das mit der PrimaryGroup ist so eine Sache für sich, nicht ganz Trival.

Als erstes musst du dir die TokenID der Gruppe besorgen, sollte über IADSUser gehen.
Danach benötigst du eine OleDbConnection: "Provider=ADsDSOObject;Encrypt Password=False;Mode=Read;Bind Flags=0;ADSI Flag=-2147483648".
Weiter geht es mit einem OleDBCommand, deren Connection-Eigenschaft auf die vorher erzeugte OleDBConnection verweist und übergibst
dem CommendText folgenden Wert: " String.Format("SELECT distinguishedName, cn, primaryGroupToken FROM '{0}' WHERE objectCategory='group'", Utility.ADsPath);"

Utility.ADsPath ist hier der distingushedName.

Ein OleDBComand.Open, .read und .getValue = fertig.

Ein Delphi-Beispiel habe ich nicht, aber eines in C#:
Code:
        internal static string GroupNameByTokenID(int primaryGroupToken)
        {
            string groupName = String.Empty;
            OleDbConnection connection = new OleDbConnection("Provider=ADsDSOObject;Encrypt Password=False;Mode=Read;Bind Flags=0;ADSI Flag=-2147483648");
            OleDbCommand command = new OleDbCommand();
            command.Connection = connection;
            command.CommandText = String.Format("SELECT distinguishedName, cn, primaryGroupToken FROM '{0}' WHERE objectCategory='group'", Utility.ADsPath);
            connection.Open();
            OleDbDataReader dr = command.ExecuteReader();
            while (dr.Read())
            {
                if (primaryGroupToken == dr.GetInt32(0))
                {
                    groupName = dr.GetValue(1).ToString();
                    break;
                }
            }
            dr.Close();
            return groupName;
        }
Ich hoffe es hilft dir weiter.

Bis bald

Alter Mann
  Mit Zitat antworten Zitat