C#获取AD域中计算机和用户的信息
如果你的计算机加入了某个AD域,则可以获取该域中所有的计算机和用户的信息。
所用程序集,需要.Net Framework 4。
添加程序集引用 System.DirectoryServices.AccountManagement
获取AD域名称,未加入AD域的,只能获取计算机名称。
如果未加入任何域,则后续的获取域用户、计算机等操作将无法进行,实例化域上下文对象时,会抛出异常。
1 IPGlobalProperties ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties(); 2 string hostName = ipGlobalProperties.HostName; 3 string domainName = ipGlobalProperties.DomainName;
获取指定域中的用户的查找对象。
1 PrincipalContext principalContext = new PrincipalContext(ContextType.Domain, domainName); 2 UserPrincipal userPrincipal = new UserPrincipal(principalContext); 3 PrincipalSearcher principalSearcher = new PrincipalSearcher(userPrincipal);
查找域中用户及其信息。
1 StringBuilder sb = new StringBuilder(); 2 foreach (UserPrincipal userPrincipalSearchResult in principalSearcher.FindAll()) 3 { 4 sb.AppendLine(string.Format("UPN:{0}", userPrincipalSearchResult.UserPrincipalName)); 5 sb.AppendLine(string.Format("姓氏Last Name:{0}", userPrincipalSearchResult.Surname)); 6 sb.AppendLine(string.Format("中间名:{0}", userPrincipalSearchResult.MiddleName)); 7 sb.AppendLine(string.Format("Given Name/First Name名:{0}", userPrincipalSearchResult.GivenName)); 8 sb.AppendLine(string.Format("名称:{0}", userPrincipalSearchResult.Name)); 9 sb.AppendLine(string.Format("上次登录时间:{0}", userPrincipalSearchResult.LastLogon)); 10 } 11 userPrincipal.Dispose(); 12 Console.WriteLine(sb.ToString());
查找域中计算机及其信息,类似于查找用户。首先使用域上下文对象实例化一个计算机对象,然后使用该对象实例化一个查找对象。
查找的结果,即为计算机对象,循环获取信息即可。
1 ComputerPrincipal computerPrincipal = new ComputerPrincipal(principalContext); 2 principalSearcher = new PrincipalSearcher(computerPrincipal); 3 // 4 foreach (ComputerPrincipal computerPrincipalSearchResult in principalSearcher.FindAll()) 5 { 6 sb.AppendLine(string.Format("UPN:{0}", computerPrincipalSearchResult.UserPrincipalName)); 7 sb.AppendLine(string.Format("描述:{0}", computerPrincipalSearchResult.Description)); 8 sb.AppendLine(string.Format("是否启用:{0}", computerPrincipalSearchResult.Enabled)); 9 sb.AppendLine(string.Format("SAM账号名:{0}", computerPrincipalSearchResult.SamAccountName)); 10 sb.AppendLine(string.Format("名称:{0}", computerPrincipalSearchResult.Name)); 11 sb.AppendLine(string.Format("上次登录时间:{0}", computerPrincipalSearchResult.LastLogon)); 12 } 13 computerPrincipal.Dispose(); 14 Console.WriteLine(sb.ToString());
参考链接:http://www.codeproject.com/Articles/489348/Active-Directory-Users-and-Computers
作者:马洪彪
出处:http://www.cnblogs.com/mahongbiao/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。