Hallo,
Ich bin momentan an einem Projekt, wo ich versuchen soll die verschiedenen Gruppen in unserem Active Directory auszulesen. Das Auslesen der Gruppenmitglieder usw. stellt kein Problem dar. Problematisch für mich wird es nun, wenn ich wissen möchte welche Gruppenmitglieder das "Senden als"-Recht haben. Hintergrund ist, dass diese Benutzer farbig markiert werden sollen.
Ich habe die Exchangegruppenobjekte als DirectoryEntry vorliegen. Ich vermute, dass man über die ObjectSecurity-Eigenschaft auf diese Dinge zugreifen kann, jedoch fehlt mir dafür ein Methodik, wie dies zu machen ist.
Kann mir jemand eine Schrittfolge oder Beispielcode geben, wie ich von dem Gruppenobjekt zu dem Benutzername der jeniger komme, die das Recht Send-as haben?
Mit freundlichen Grüßen
Chris
Ich mach zwar viel mit dem AD aber was ist das SendAs-Recht?
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Das ist zum Beispiel, dass Max Mustermann (Max.Mastermann@example.de) im Namen des Mailverteilers Alle****@example.de Mails versenden kann.
Das solltest Du erwähnen weil sonst kein Mensch erraten kann, dass Du Outlook meinst.
Send-As is wohl ein erweitertes Recht der Distribution Group.
Über diese bekommst Du die Security Identifier der Gruppe / der User (=Member), die das dürfen.
Und über die Security Identifier bekommst Du die SamAccountName.
Beachte [Hinweis] Wie poste ich richtig? Punkt 4 zum Thema CodeBeispiele.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Ich vermute, dass man über die ObjectSecurity-Eigenschaft auf diese Dinge zugreifen kann, jedoch fehlt mir dafür ein Methodik, wie dies zu machen ist.
ja, etwa so (aus der Hand getippt, daher keine Garantie über Lauffähigkeit)
ActiveDirectorySecurity objADS = yourObject.ObjectSecurity;
foreach (ActiveDirectoryAccessRule objAR in objADS.GetAccessRules(true, true, typeof(yourNTAccount)))
{ ... }
Grüße
**:::
Entschuldige bitte Abt.
Ich hab jetzt einmal den Vorschlag von vbprogger aufgenommen und mir folgendes gedacht:
List<string> liste = new List<string>();
if (RadioButton2.Checked)
{
//erg entspricht dem DirectoryEntry
ActiveDirectorySecurity ADS1 = erg.ObjectSecurity;
byte[] a = (byte[])erg.Properties["objectSid"].Value;
SecurityIdentifier SID_erg = new SecurityIdentifier(a, 0);
foreach (ActiveDirectoryAccessRule objAR in ADS1.GetAccessRules(true, false, SID_erg.GetType()))
{
if (objAR.ActiveDirectoryRights.ToString().Contains("ExtendedRight"))
{
IdentityReference x = objAR.IdentityReference;
//SecurityIdentifier b = new SecurityIdentifier(x.Value);
DirectoryEntry alle = new DirectoryEntry("LDAP://.......");
DirectorySearcher sear = new DirectorySearcher(alle, "(objectSid=" + x.Value + ")");
foreach (SearchResult result in sear.FindAll())
{
liste.Add(result.Properties["name"][0].ToString());
}
}
}
}
Jedoch stellt sich für mich immer noch die Frage, wie ich weiß, ob dieses ExtendedRight auch dem Senden-Als-Recht entspricht.
How to get a list of all users I can "send on behalf" of or "Send As" programatically sollte eigentlich alle Fragen beantworten.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code