如果你的计算机加入了某个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());

参考链接:http://www.codeproject.com/Articles/489348/Active-Directory-Users-and-Computers

C#获取AD域中计算机和用户的信息的更多相关文章

  1. 获取AD域中SYSVOL和组策略首选项中的密码

    这种方法是最简单的,因为不需要特殊的“黑客”工具.所有的攻击必须做的是打开Windows资源管理器,并搜索域名为SYSVOL DFS共享的XML文件.在大多数情况下,以下XML文件将包含凭据:grou ...

  2. JAVA 通过LDAP获取AD域用户及组织信息

    因为工作需求近期做过一个从客户AD域获取数据实现单点登录的功能,在此整理分享. 前提:用户可能有很多系统的情况下,为了方便账号的统一管理使用AD域验证登录,所以不需要我们的系统登录,就需要获取用户的A ...

  3. AD 域服务简介(二)- Java 获取 AD 域用户

    博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 一.前言 先简单简单回顾上一篇 ...

  4. .net 修改AD域中的密码

    1.通过vs 2013 新建一个web站点(不是空项目),这个会带一下模板, 2.然后新建一个页面UpdatePassWord.aspx aspx页面内容: <%@ Page Title=&qu ...

  5. AD域中添加了一个策略导致的问题

    AD域中添加了一个策略,导致浏览器报了一个错,点击下拉菜单选不了.查了资料说是添加信任站点就好,结果信任站点是置灰的,服务器有这个问题,本地是好的. 解决办法:本地服务器有个ie增强设置,关掉就好.

  6. .net core在Linux下获取AD域信息

    .net core在Linux下获取AD域信息 .net Core 2.1.4 .net core现在System.DirectoryServices只支持Windows平台下使用. 参考: http ...

  7. C#开发微信门户及应用(10)--在管理系统中同步微信用户分组信息

    在前面几篇文章中,逐步从原有微信的API封装的基础上过渡到微信应用平台管理系统里面,逐步介绍管理系统中的微信数据的界面设计,以及相关的处理操作过程的逻辑和代码,希望从更高一个层次,向大家介绍微信的应用 ...

  8. C#-MVC开发微信应用(7)--在管理系统中同步微信用户分组信息

    在前面几篇文章中,逐步从原有微信的API封装的基础上过渡到微信应用平台管理系统里面,逐步介绍管理系统中的微信数据的界面设计,以及相关的处理操作过程的逻辑和代码.希望从一个更高的层次介绍微信的开发. 在 ...

  9. Python之uiautomation模块-获取CMD窗口中所打印的文字信息

    当我们想以自动化的方式操作软件,以提高办公或测试效率时,有许多成熟的工具,比如针对Web端应用的Selenium.针对移动端应用的Appium.那么,PC端(Windows)桌面应用,又改如何处理呢? ...

随机推荐

  1. Linux 开机过程(转)

    Linux 开机过程 初始化 POST(加电自检)并执行硬件检查: 当 POST 完成后,系统的控制权将移交给启动管理器的第一阶段(first stage),它存储在一个硬盘的引导扇区(对于使用 BI ...

  2. C语言奇淫技巧,字符串的三种表示方法,不会用不是合格的程序员

    1.在C语言中,是将字符串作为字符数组来处理的,字符串是逐个存放到数组元素中的 例如用一个一维的字符数组存放字符串"I am a boy.",如下代码: char c[12] = ...

  3. C#-WebForm 如何获取下拉列表选中的值 jquery

    分别使用javascript原生的方法和jquery方法<select id="test" name=""> <option value=&q ...

  4. jmeter的non-gui模式的使用

    jmeter的non-gui模式的使用,待补充

  5. Spring Security 入门

    一.Spring Security简介 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在Spring应用上下文中配 ...

  6. HBase 使用外部的 zookeeper

    HBase 启动时,默认会根据hbase-site.xml文件中的如下设置端口上启动一个zookeeper服务: <property> <name>hbase.zookeepe ...

  7. (转)MySQL高可用架构之MHA

    MySQL高可用架构之MHA  原文:http://www.cnblogs.com/gomysql/p/3675429.html 简介: MHA(Master High Availability)目前 ...

  8. Asp.Net Cache缓存技术学习

    本文参考自Fish Li的细说 ASP.NET Cache 及其高级用法 一.前言,相信大多数做网站开发的都知道缓存技术对于网站的重要性,它对于网站的性能优化起着至关重要的作用. 关于缓存的技术大致有 ...

  9. ActiveMQ安装及使用

    1 安装环境 1.需要jdk2.安装Linux系统.生产环境都是Linux系统. 2 安装步骤 第一步: 把ActiveMQ 的压缩包上传到Linux系统.第二步:解压缩. 第三步:关闭防火墙 临时关 ...

  10. orcale 之 PL/SQL的游标

    根据我们之前了解到的情况,SQL是面向集合的,我们的查询结果一般包含多条数据,而在PL/SQL 中的变量一般只能存放一条数据,因此变量是无法满足我们的需求的.这时候我们就需要引入游标来为我们解决问题了 ...