如何获取特定域的用户列表?

时间:2014-08-07 07:51:17

标签: c# windows

有什么方法可以通过域名获取网络上的用户数量? 例如,如果有50个用户使用Windows连接到网络。我可以获得所有50个用户(用户名)的列表吗?

1 个答案:

答案 0 :(得分:2)

您可以获得以下所有用户的列表:

        static List<string> GetUsersInForest()
        {
            var winIdentity = System.Web.HttpContext.Current.User.Identity as System.Security.Principal.WindowsIdentity;
            if (winIdentity == null) throw new InvalidOperationException();

            using (var ictx = winIdentity.Impersonate())
            {
                List<string> users = new List<string>();
                using (var f = System.DirectoryServices.ActiveDirectory.Forest.GetCurrentForest())
                {
                    foreach (Domain d in f.Domains)
                    {
                        using (d)
                        {
                            foreach (string user in GetUsersInDomain(d.Name))
                            {
                                int idx = users.BinarySearch(user);
                                if (idx < 0) users.Insert(~idx, user);
                            }
                        }
                    }
                }

                return users;
            }
        }

然后根据需要过滤用户