Laden...

Windows 10 - Gruppenzugehörigkeit eines Benutzers ermitteln (ohne AD)

Erstellt von Jörg vor 2 Jahren Letzter Beitrag vor 2 Jahren 259 Views
J
Jörg Themenstarter:in
152 Beiträge seit 2009
vor 2 Jahren
Windows 10 - Gruppenzugehörigkeit eines Benutzers ermitteln (ohne AD)

Hallo,

ich möchte unter Windows 10 die lokalen Gruppen eines Benutzers ermitteln.

Folgendes Snippet habe ich dazu gefunden:


        /// <summary>
        ///     Ermittelt alle Gruppen die ein bestimmter User gehört.
        /// </summary>
        /// <param name="username">
        ///     Windows-NT-Anmeldename des Benutzers für welchen die Gruppenzugehörigkeit ermittelt werden soll
        /// </param>
        /// <returns>
        ///     eine Liste mit den Gruppennamen
        /// </returns>
        public List<string> GetGroupsOfMember(string username)
        {
            List<string> groups = new List<string>();
            // Objekt für AD-Abfrage erzeugen
            using (DirectorySearcher searcher = new DirectorySearcher(new DirectoryEntry(string.Empty)))
            {
                // nach Kriterium filtern - hier nach Gruppe mit einem best. Namen (Inhalt von 'username')
                searcher.Filter = string.Concat(string.Format(@"(&(ObjectClass=user)(sAMAccountName={0}))", username));

                // Anfrage mit gesetzteen Filter ausführen und Ergebnisse durch iterieren
                foreach (SearchResult result in searcher.FindAll())
                {
                    // Eigenschaft 'MemberOf' des AD-Knotenpunktes 'result' durch iterieren
                    foreach (var group in result.Properties["MemberOf"])
                    {
                        // cast von 'group' zum Datentyp 'string' sollte nicht möglich sein, wird 'groupResult' 'null'
                        string groupResult = group as string;

                        if (groupResult != null)
                        {
                            // CN aus dem Pfad extrahieren und zur Liste hinzufügen
                            groups.Add(groupResult.Substring(3, groupResult.IndexOf(',') - 3));
                        }
                    }
                }
            }

            return groups;
        }


Allerdings funktioniert dieses Snippet nur wenn der PC über eine Active Directory-Anbindung verfügt.

Ich möchte allerdings die Gruppenzugehörigkeit eines Benutzers auch ohne Active-Directory-Anbindung auslesen.

Hat jemand hierfür ein gutes Snippet?

16.835 Beiträge seit 2008
vor 2 Jahren

Dazu brauchst Du kein Snippet, sondern nur nen Blick in die Doku 😉
Einfach den aktuellen UserPrincipal ermitteln und die Groups des Objekts auslesen.

Ich bin mir sicher, dass Du mit Google Suche nach "c# get local user group membership" die Lösung findest, sofern Du ein fertiges Snippets willst 🙂

J
Jörg Themenstarter:in
152 Beiträge seit 2009
vor 2 Jahren

Wow, das ging schnell 😉

Da hab ich wohl die falschen Suchbegriffe benutzt 😲

Vielen Dank 👍