Esempio n. 1
0
        protected void GetUserMembership(IADsGroup group, string userName, string propertyName, List <string> userGroups)
        {
            try
            {
                string userAccountName;
                string groupAccountName = String.Empty;

                IADsMembers membership = group.Members();

                foreach (object obj in membership)
                {
                    userAccountName = DirectoryServicesUtils.GetObjectAccountName((IADs)obj, propertyName);

                    if (StringUtil.CompareIgnoreCase(userAccountName, userName))
                    {
                        if (!StringUtil.IsStringInitialized(groupAccountName))
                        {
                            groupAccountName = DirectoryServicesUtils.GetObjectAccountName(group, propertyName);
                        }

                        userGroups.Add(groupAccountName);
                    }
                }
            }
            catch (Exception exc)
            {
                Log.WriteWarning("Failed to obtain user membership. Details : {0}", exc.Message);
            }
        }
Esempio n. 2
0
        protected void GetUserMembership(IADsUser user, string propertyName, List <string> userGroups)
        {
            try
            {
                IADsMembers membership = user.Groups();

                foreach (IADsGroup group in membership)
                {
                    userGroups.Add(DirectoryServicesUtils.GetObjectAccountName(group, propertyName));
                }
            }
            catch (Exception exc)
            {
                Log.WriteWarning("Failed to obtain user membership. Details : {0}", exc.Message);
            }
        }
Esempio n. 3
0
        /* Methode zum Ermitteln aller Gruppen eines Benutzers */
        public static StringCollection EnumUserGroups(string domainName,
                                                      string machineName, string userName, string bindUser, string bindPassword)
        {
            // StringCollection für die ermittelten Gruppennamen
            StringCollection groups = new StringCollection();

            // DirectoryEntry-Objekt für den Benutzer erzeugen
            if (domainName == null && machineName == null)
            {
                machineName = Environment.MachineName;
            }
            string adsiPath = "WinNT://" +
                              (domainName != null ? domainName + "/" : "") +
                              (machineName != null ? machineName + "/" : "") +
                              userName + ",user";
            DirectoryEntry userEntry = new DirectoryEntry(adsiPath,
                                                          bindUser, bindPassword);

            try
            {
                // Gruppen dieses Benutzers einlesen
                IADsMembers adsMembers = (IADsMembers)userEntry.Invoke("Groups");

                // Member so filtern, dass nur Group-Objekte übrig bleiben
                adsMembers.Filter = new object[] { "group" };

                // Gruppen durchgehen
                foreach (IADsGroup adsGroup in adsMembers)
                {
                    groups.Add(adsGroup.Name);
                }
            }
            finally
            {
                // ADSI-Objekt freigeben
                userEntry.Dispose();
            }

            // Die ermittelten Gruppen zurückgeben
            return(groups);
        }
Esempio n. 4
0
        /* Methode zum Ermitteln aller Benutzer einer Gruppe */
        public static StringCollection EnumGroupMembers(string domainName,
                                                        string machineName, string groupName, string bindUser, string bindPassword)
        {
            // StringCollection für die ermittelten Benutzernamen erzeugen
            StringCollection users = new StringCollection();

            // DirectoryEntry-Objekt für die Gruppe holen
            if (domainName == null && machineName == null)
            {
                machineName = Environment.MachineName;
            }
            string adsiPath = "WinNT://" +
                              (domainName != null ? domainName + "/" : "") +
                              (machineName != null ? machineName + "/" : "") +
                              groupName + ",group";
            DirectoryEntry groupEntry = new DirectoryEntry(adsiPath, bindUser,
                                                           bindPassword);

            try
            {
                // Member dieser Gruppe einlesen
                IADsMembers adsMembers = (IADsMembers)groupEntry.Invoke("Members");

                // Member so filtern, dass nur User-Objekte übrig bleiben
                adsMembers.Filter = new object[] { "user" };

                // Benutzer durchgehen
                foreach (IADsUser adsUser in adsMembers)
                {
                    users.Add(adsUser.Name);
                }
            }
            finally
            {
                // ADSI-Objekt freigeben
                groupEntry.Dispose();
            }

            // Die ermittelten Benutzer zurückgeben
            return(users);
        }