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

  • 相关阅读:
    Oracle学习(十四):管理用户安全性
    Android在发送带有附件的邮件
    Naive Bayes Classification
    java大全经典的书面采访
    安卓实现实时视频传输
    TCP:三次握手,URG、ACK、PSH、RST、SYN、FIN 含义
    SYN(synchronous)TCP/IP
    面向对象、面向过程与哲学
    面向过程和面向对象的哲学基础
    面向过程
  • 原文地址:https://www.cnblogs.com/mahongbiao/p/3762377.html
Copyright © 2011-2022 走看看