Hallo und willkommen bei codekicker! Haben Dir unsere Antworten geholfen? War nicht das richtige dabei? Die meisten hier Antwortenden freuen sich über Feedback in Form von Kommentaren, Bewertungen oder sogar als "richtig" akzeptierten Antworten.
Ich geh mal davon aus, dass Du den aktuellen Benutzer als Instanz von WindowsPrincipal hast (bzw. als IPrincipal, den Du auf WindowsPrincipal casten kannst). Dessen Identity-Eigenschaft liefert Dir eine IIdentity, die Du auf WindowsIdentity castest, darüber kommst Du an die Groups mit Typ IdentityReferenceCollection, und darauf rufst Du die Methode Translate(typeof(NTAccount)) auf - und dann hast Du sie.
DirectoryEntry user = new DirectoryEntry("WinNT://HOSTNAME/Administrator,user", null, null);
StringCollection groups = new StringCollection();
try { IADsMembers members = (IADsMembers)user.Invoke("Groups"); members.Filter = new object[] { "group" };
foreach (IADsGroup group in members) { groups.Add(group.Name); } } finally { user.Dispose(); }
foreach (string s in groups) { Console.WriteLine(s); }
O.a. Code benötigt die Namensräume System.DirectoryServices, System.Collection.Specialized und ActiveDs und entsprechende Verweise. Im Beispiel ist HOSTNAME der Name des betreffenden Computers - als Benutzer habe ich mal Administrator genommen. Wenn's für eine Domäne sein soll, musst du aber noch ein paar Parameter mehr angeben.