C#获取AD域中计算机和用户的信息
如果你的计算机加入了某个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域中计算机和用户的信息的更多相关文章
- 获取AD域中SYSVOL和组策略首选项中的密码
这种方法是最简单的,因为不需要特殊的“黑客”工具.所有的攻击必须做的是打开Windows资源管理器,并搜索域名为SYSVOL DFS共享的XML文件.在大多数情况下,以下XML文件将包含凭据:grou ...
- JAVA 通过LDAP获取AD域用户及组织信息
因为工作需求近期做过一个从客户AD域获取数据实现单点登录的功能,在此整理分享. 前提:用户可能有很多系统的情况下,为了方便账号的统一管理使用AD域验证登录,所以不需要我们的系统登录,就需要获取用户的A ...
- AD 域服务简介(二)- Java 获取 AD 域用户
博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 一.前言 先简单简单回顾上一篇 ...
- .net 修改AD域中的密码
1.通过vs 2013 新建一个web站点(不是空项目),这个会带一下模板, 2.然后新建一个页面UpdatePassWord.aspx aspx页面内容: <%@ Page Title=&qu ...
- AD域中添加了一个策略导致的问题
AD域中添加了一个策略,导致浏览器报了一个错,点击下拉菜单选不了.查了资料说是添加信任站点就好,结果信任站点是置灰的,服务器有这个问题,本地是好的. 解决办法:本地服务器有个ie增强设置,关掉就好.
- .net core在Linux下获取AD域信息
.net core在Linux下获取AD域信息 .net Core 2.1.4 .net core现在System.DirectoryServices只支持Windows平台下使用. 参考: http ...
- C#开发微信门户及应用(10)--在管理系统中同步微信用户分组信息
在前面几篇文章中,逐步从原有微信的API封装的基础上过渡到微信应用平台管理系统里面,逐步介绍管理系统中的微信数据的界面设计,以及相关的处理操作过程的逻辑和代码,希望从更高一个层次,向大家介绍微信的应用 ...
- C#-MVC开发微信应用(7)--在管理系统中同步微信用户分组信息
在前面几篇文章中,逐步从原有微信的API封装的基础上过渡到微信应用平台管理系统里面,逐步介绍管理系统中的微信数据的界面设计,以及相关的处理操作过程的逻辑和代码.希望从一个更高的层次介绍微信的开发. 在 ...
- Python之uiautomation模块-获取CMD窗口中所打印的文字信息
当我们想以自动化的方式操作软件,以提高办公或测试效率时,有许多成熟的工具,比如针对Web端应用的Selenium.针对移动端应用的Appium.那么,PC端(Windows)桌面应用,又改如何处理呢? ...
随机推荐
- CTF中密码学一些基础【三】
本文作者:i春秋签约作家——MAX. 看看今天教程: 看着几个字符在键盘的位置,直接就是三个圈圈,圆心的三个字符就是答案 非常简单! 答案就是KEY 看题解密就好了!! 根据提示Asp encode解 ...
- MySQL之FOUND_ROWS()的用法
SELECT FOUND_ROWS() 输出8(输出该表共有多少列)
- form-inline+form-group 实现表单横排显示(Bootstrap)
运行后的效果如下: 使用时要注意如下: 如果form元素有form-line修饰,那么form-group 所修饰的元素内部只能包含一个元素,否则,不会达到预期效果
- SP9098 LCS3
题目链接 题意分析 \(olinr\) : 序列自动机+一系列的鬼畜操作 相信我 你们没人能切 \(lzxkj\) : \(2^m+vector+\)暴力二分 跑得比你正解还快 首先一看\(m≤5\) ...
- POJ1095 Trees Made to Order(JAVA)
这题用到了卡特兰数,比较麻烦.关于卡特兰数的基本概念百度一下你就知道. 使用卡特兰数对数组元素进行分组之后,需要具体计算一下要求的是第几组的第几个数,然后向下递归. 首先来看利用卡特兰数分组: 从1开 ...
- java连接hbase时出现....is accessible from more than one module:
今天在用java程序连接hbase时,出现错误,The package org.apache.hadoop.hbase is accessible from more than one module: ...
- LinkedList简要分析
LinkedList概述 LinkedList 实现List接口,底层是双向链表,非线程安全.LinkedList还可以被当作堆栈.队列或双端队列进行操作.在JDK1.7/8 之后取消了循环,修改为双 ...
- 获得自己电脑的SSH公匙
关于什么是SSH请点击此"www.Baidu.com”网站了解 我这里只说怎么获取属于自己电脑的SSH公匙 本人是Win10电脑 所以相对来说简单一点 点击win ->选择设置-&g ...
- 03-树2 List Leaves (25 分)
Given a tree, you are supposed to list all the leaves in the order of top down, and left to right. I ...
- Mac 10.12安装StarUML
说明:这款是收费软件,但是可以不缴费继续使用,然后就是有弹框提示收费而已.基本揽括了时序图.用例图.流程图等等.主要是跨平台且小巧. 下载: (链接: https://pan.baidu.com/s/ ...