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