zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    sql中的group by 和 having 用法解析
    关于js的this上下文环境绑定
    windows Service循环任务.服务启动后无法停止重启的解决办法
    js 数组对象的操作方法
    SVN Client API的.net 接口 SharpSvn介紹 Checkout操作实例
    JQuery实现表格的相同单元格合并的三种方法
    SharpSVN出错信息:Can't determine the user's config path,从此证明了百度是个垃圾
    显示js对象所有属性和方法的函数
    软件开发实践的24条军规
    C#中的泛型
  • 原文地址:https://www.cnblogs.com/mahongbiao/p/3762377.html
Copyright © 2011-2022 走看看