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

C#获取AD域中计算机和用户的信息,布布扣,bubuko.com

时间: 2024-10-26 09:57:48

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

使用工具Csvde将域中的所有用户的信息导出

有时我们需要获取AD域用户中的信息及状态,想知道哪些用户帐号是被禁用的,哪些用户帐号是正常的,用户的部门.电话.职位信息等等. 下面我将自己做的实验步骤分享一下. 第1步:首先用脚本命令将AD用户信息导出,导的时候可以根据自己的需要,导出有用的用户信息,过滤掉不需要的信息. 命令脚本: csvde -d "ou=XX公司,DC=contoso,DC=com" -r "(&(objectcategory=person)(objectClass=user))" 

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

因为工作需求近期做过一个从客户AD域获取数据实现单点登录的功能,在此整理分享. 前提:用户可能有很多系统的情况下,为了方便账号的统一管理使用AD域验证登录,所以不需要我们的系统登录,就需要获取用户的AD域组织和用户信息,实现域认证和单点登录. LDAP: LDAP是轻量目录访问协议 AD域:微软基于域模式的集中化管理 1.常规的AD域登陆验证 LdapContext dc = null;             Hashtable<String, String> env = new Hasht

Java使用LdAP获取AD域用户

随着我们的习大大上台后,国家在网络信息安全方面就有了很明显的改变!所以现在好多做网络信息安全产品的公司和需要网络信息安全的公司都会提到用AD域服务器来验证,这里就简单的研究了一下! 先简单的讲讲AD域和LdAP目录访问协议:AD(active directory)活动目录,动态的建立整个域模式网络中的对象的数据库或索引,协议为LDAP,安装了AD的服务器称为DC域控制器,存储整个域的对象的信息并周期性更新!其中的对象分为三大类--资源(如印表机).服务(如电子邮件).和人物(即帐户或用户,以及组

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

博客地址:http://www.moonxy.com 一.前言 先简单简单回顾上一篇博文中关于 AD 域和 LDAP目录访问协议的基本概念. AD(Active Directory)活动目录,动态的建立整个域模式网络中的对象的数据库或索引,使用的协议为 LDAP,安装了AD 的服务器称为 DC 域控制器,存储整个域的对象的信息并周期性更新,其中的对象分为三大类:资源(如印表机).服务(如电子邮件).和用户(即帐户或用户,以及组). 通常大家都会将 LDAP 与关系数据库相比,认为 LDAP 是另

java以及C#获取AD域上用户信息

JAVA /** *  JAVA 读取AD用户信息 *  aa00a00 */package com.wanda.sso.client.servlet; import java.util.Hashtable; import javax.naming.Context;import javax.naming.NamingEnumeration;import javax.naming.NamingException;import javax.naming.directory.Attribute;imp

AD域中常见属性名词解释

AD域中常见属性名词解释 Active Directory(AD)活动目录 schema对象模型 Organizational Unit(OU)组织单位 Distinguished name(DN)识别名 Canonical Name(CN)正式名称 Domain Controllers(DC)域控制器 displayname显示名称 homephone住宅电话 家庭电话(M) givenname名(F) samaccounttype账号类型 mobile手机 primarygroupid分组I

.net 修改AD域中的密码

1.通过vs 2013 新建一个web站点(不是空项目),这个会带一下模板, 2.然后新建一个页面UpdatePassWord.aspx aspx页面内容: <%@ Page Title="UpdatePassWord" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="UpdatePassWord.a

如何在域中批量建立用户

域中批量建立用户 标签:张兆森 如何在域里批量建立用户.实现的目的是什么. 减轻管理员建立用户的步骤,省时间.减轻工作量. 实验步骤: 1.先打开Excel表格创建需要导入的用户的列表,并保存为.CSV文件,移动到域控制器下的某个磁盘里 2.再去域里建立一个OU(即组织单位) 在进入命令行工具里去 3.输入for /f "tokens=1,2,3,4,5,6,7 delims=,"  %a in (c:\Book11.csv) do dsadd user "cn=%c,ou=

解决jsp获取sesion域中的值之字符串拼接的问题

2015年5月22日 天气阴 问题描述: 后台代码: //caseId为字符串类型 Struts2Utils.getRequest().getSession().setAttribute(caseId + "idPhoto", idPhoto); jsp获取idPhoto获取session域中的值 错误写法: ${param.search_caseId+"idPhoto"} 正确写法一: <c:set var="idPhotoName" v