大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > C#技巧 > C#获取AD域中计算机和用户的信息

C#获取AD域中计算机和用户的信息

关键词:C#AD域计算机信息用户信息  阅读(4155) 赞(14)

[摘要]本文是对C#获取AD域中计算机和用户的信息的讲解,对学习C#编程技术有所帮助,与大家分享。

如果你的计算机加入了某个AD域,则可以获取该域中所有的计算机和用户的信息。

所用程序集,需要.Net Framework 4。

添加程序集引用System.DirectoryServices.AccountManagement

获取AD域名称,未加入AD域的,只能获取计算机名称。

如果未加入任何域,则后续的获取域用户、计算机等操作将无法进行,实例化域上下文对象时,会抛出异常。

 IPGlobalProperties ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties();
 string hostName = ipGlobalProperties.HostName;
 string domainName = ipGlobalProperties.DomainName;

获取指定域中的用户的查找对象。

 PrincipalContext principalContext = new PrincipalContext(ContextType.Domain, domainName);
 UserPrincipal userPrincipal = new UserPrincipal(principalContext);
 PrincipalSearcher principalSearcher = new PrincipalSearcher(userPrincipal);

查找域中用户及其信息。

 StringBuilder sb = new StringBuilder(); 
 foreach (UserPrincipal userPrincipalSearchResult in principalSearcher.FindAll())
 {
     sb.AppendLine(string.Format("UPN:{0}", userPrincipalSearchResult.UserPrincipalName));
     sb.AppendLine(string.Format("姓氏Last Name:{0}", userPrincipalSearchResult.Surname));
     sb.AppendLine(string.Format("中间名:{0}", userPrincipalSearchResult.MiddleName));
     sb.AppendLine(string.Format("Given Name/First Name名:{0}", userPrincipalSearchResult.GivenName));
     sb.AppendLine(string.Format("名称:{0}", userPrincipalSearchResult.Name));
     sb.AppendLine(string.Format("上次登录时间:{0}", userPrincipalSearchResult.LastLogon));
 }
 userPrincipal.Dispose();
 Console.WriteLine(sb.ToString());

查找域中计算机及其信息,类似于查找用户。首先使用域上下文对象实例化一个计算机对象,然后使用该对象实例化一个查找对象。

查找的结果,即为计算机对象,循环获取信息即可。

 ComputerPrincipal computerPrincipal = new ComputerPrincipal(principalContext);
 principalSearcher = new PrincipalSearcher(computerPrincipal);
 // 
 foreach (ComputerPrincipal computerPrincipalSearchResult in principalSearcher.FindAll())
 {
     sb.AppendLine(string.Format("UPN:{0}", computerPrincipalSearchResult.UserPrincipalName));
     sb.AppendLine(string.Format("描述:{0}", computerPrincipalSearchResult.Description));
     sb.AppendLine(string.Format("是否启用:{0}", computerPrincipalSearchResult.Enabled));
     sb.AppendLine(string.Format("SAM账号名:{0}", computerPrincipalSearchResult.SamAccountName));
     sb.AppendLine(string.Format("名称:{0}", computerPrincipalSearchResult.Name));
     sb.AppendLine(string.Format("上次登录时间:{0}", computerPrincipalSearchResult.LastLogon));
 }
 computerPrincipal.Dispose();
 Console.WriteLine(sb.ToString());


相关评论