使用PrincipalContext连接到活动目录

时间:2016-04-13 19:18:58

标签: c# active-directory connection-string

im writtem app,根据名称

在活动目录中查找用户

当我尝试使用ContextType.Domain创建新的PrincipalContext并将域名作为字符串时,我得到异常"无法联系到服务器。"

所以为了得到AD我做了这个...... 单击“开始”按钮“开始”按钮的图片,再依次单击“控制面板”,“系统和维护”,然后单击“系统”,打开“系统”。 我从http://windows.microsoft.com/en-gb/windows-vista/find-the-domain-your-computer-is-on获得了

哪个给了我 Something.Something(不是这个,而是两个带有。之间的字符串)

因此,当我运行以下代码并输入Something.Something作为域时,我得到异常"无法联系服务器。"在新的PrincipalContext上(ContextType.Domain,domain); 我试过改变字符串的情况,但似乎没有运气。

那么我应该为域名使用什么?

    public static void Main(string[] args)
    {
        try
        {
            Console.WriteLine("Enter Domain, then press enter.");
            string domain = Console.ReadLine();

            Console.WriteLine("Enter First Name, then press enter.");
            string userName = Console.ReadLine();

            //This is the line that always crashes throws error
            var principalContext = new PrincipalContext(ContextType.Domain, domain);
            var user = UserPrincipal.FindByIdentity(principalContext, userName);

            if (user == null)
            {
                Console.WriteLine("User Not Found");
            }

            var groups = user.GetGroups(principalContext);
            var result = new List<string>();
            groups.ToList().ForEach(sr => result.Add(sr.SamAccountName));

            foreach (var item in result)
            {
                Console.WriteLine(item);
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }

1 个答案:

答案 0 :(得分:0)

如果您有几秒钟的时间等待来自大型 AD 的数据,请继续使用 PrincipalContext,但如果您希望以毫秒为单位做出响应,请使用 DirectoryEntry、DirectorySearcher 和 .PropertiesToLoad。

以下是获取用户组的示例:

https://stackoverflow.com/a/65986796/5248400