C# Webform中读取Windows AD/LDAP域用户清单
直接上干货,核心代码如下,读取出来相应的用户清单到DataTable中。需要其它字段可以自己增加,别忘了引用using System.DirectoryServices。
#region private DataTable GetData(int pageIndex, int pageSize, out int recordCount) 获取数据 /// <summary>
/// 获取数据
/// </summary>
private DataTable GetData(int pageIndex, int pageSize, out int recordCount)
{
string ldapPath = this.txtLDAPPath.Text.Trim();
string ldapDomain = this.txtLDAPDomain.Text.Trim();
string ldapUserName = this.txtLDAPUserName.Text.Trim();
string ldapPassword = this.txtLDAPPassword.Text.Trim();
string searchValue = this.txtSearch.Text.Trim(); //总记录数量
int iRecordCount = ;
//BaseUserManager manager = new BaseUserManager(this.UserCenterDbHelper, this.UserInfo);
//自定义LDAP用户表
DataTable dtLdapUser = null;
dtLdapUser = new DataTable();
DataColumn[] columns =
{
new DataColumn(BaseUserEntity.FieldId),
new DataColumn(BaseUserEntity.FieldUserName),
new DataColumn(BaseUserEntity.FieldRealName),
new DataColumn(BaseUserEntity.FieldUserFrom)
};
dtLdapUser.Columns.AddRange(columns);
try
{
// 读取用户
using (var de = new DirectoryEntry())
{
de.Path = ldapPath;
if (!string.IsNullOrEmpty(ldapUserName))
{
if (string.IsNullOrEmpty(ldapDomain))
{
de.Username = ldapUserName;
}
else
{
de.Username = ldapDomain + "\\" + ldapUserName;
}
}
//密码为空就默认不验证用户密码
if (!string.IsNullOrEmpty(ldapPassword))
{
de.Password = ldapPassword;
de.AuthenticationType = AuthenticationTypes.Secure;
}
//刷新缓存
de.RefreshCache(); using (DirectorySearcher searcher = new DirectorySearcher())
{
searcher.SearchRoot = de;
searcher.Filter = "(objectClass=user)";
searcher.SearchScope = SearchScope.Subtree; //需要导入的属性
//登录名
searcher.PropertiesToLoad.Add("userprincipalname");
//姓名
searcher.PropertiesToLoad.Add("name"); //定义排序方式
searcher.Sort = new SortOption("givenName", System.DirectoryServices.SortDirection.Ascending); SearchResultCollection results = searcher.FindAll();
int i = ;
foreach (SearchResult result in results)
{
DataRow row = dtLdapUser.NewRow(); ResultPropertyCollection props = result.Properties;
string[] userNameArray = null;
if (props.PropertyNames != null)
{
foreach (string propName in props.PropertyNames)
{
if (propName == "userprincipalname")
{
userNameArray = props[propName][].ToString().Split('@');
//只保留@前的用户名
row[BaseUserEntity.FieldUserName] = userNameArray[].ToString();
}
if (propName == "name")
{
row[BaseUserEntity.FieldRealName] = props[propName][];
}
}
}
row[BaseUserEntity.FieldUserFrom] = "AD";
if (userNameArray != null && !string.IsNullOrEmpty(userNameArray[].ToString()))
{
i++;
row[BaseUserEntity.FieldId] = i;
dtLdapUser.Rows.Add(row);
}
}
}
} recordCount = dtLdapUser.Rows.Count; }
catch (Exception e)
{
recordCount = ;
}
return dtLdapUser;
}
#endregion
我还增加了LDAP(Windows AD域)用户一键导入的功能,截图如下,代码核心就是循环读取上述获取的DataTable,记得判断一下用户是否已经存在即可。
C# Webform中读取Windows AD/LDAP域用户清单的更多相关文章
- java web 中 读取windows图标并显示
java web中读取windows对应文件名的 系统图标 ....显示 1.获取系统图标工具类 package utils; import java.awt.Graphics; import j ...
- 在Windows Server 2008 R2中使用web方式修改域用户账户密码
在Windows的domain环境下,加域的客户端修改账户密码是一件很easy的事情:即使没有加域的客户端如果组织中,使用Exchange邮件系统,借助Exchange的owa也可以轻松修改账户密码. ...
- WINDOWS 2008 SERVER域用户自动登陆
The user I wanted to auto-logon as didn’t have a password, this reg hack worked instead: HKEY_LOCAL_ ...
- Django开发文档-域用户集成登录
项目概述: 一般在企业中,用户以WINDOWS的域用户统一的管理,所以以Django快速开发的应用,不得不集成AD域登录. 网上一般采用django-python3-ldap的库来做集成登录,但是本方 ...
- Window通过Web方式修改域用户密码
如何通过web方式修改域用户密码: 1.在Windows Server 2003上,系统默认提供了iisadmpwd作为一种修改域用户密码的方式 2.在Windows Server 2008上,可以提 ...
- SharePoint 2010中重置windows 活动目录(AD)域用户密码的WebPart(免费下载)
由于SharePoint 2013推出不久,并非所有的企业都会升级到SharePoint 2013的,毕竟升级不是打打补丁这么简单,更多的企业还是使用Sharepoint 2010版本的,因此本人自行 ...
- SharePoint 2013中修改windows 活动目录(AD)域用户密码的WebPart(免费下载)
前段时间工作很忙,好久没更新博客了,趁国庆休假期间,整理了两个之前积累很实用的企业集成组件,并在真正的大型项目中经受住了考验:.Net版SAP RFC适配器组件和SharePoint 2013修改AD ...
- Windows AD域升级方
前面的博客中我谈到了网络的基本概念和网络参考模型,今天我们来谈企业中常用的技术,Windows AD 域,今天我的笔记将重点讲解Windows AD 域的升级和迁移方法,通过3个小实验进行配置,真实环 ...
- windows AD域安装及必要设置
一.安装AD域 运行dcpromo命令,安装AD域. 步骤: 1.win+R 2.dcpromo 图例: 百度百科关于“dcpromo”解释: dcpromo命令是一个“开关”命令.如果Windows ...
随机推荐
- 更改CI框架默认访问路径及去掉index.php
下面是去掉index.php的操作 PHP CodeIgniter(CI)去掉 index.php - Langjun - 博客园 设置访问的默认路径是在
- OPENCV之GFTT特征点检测
之前角点检测的时候提到过角点检测的算法,第一个是cornerHarris计算角点,但是这种角点检测算法容易出现聚簇现象以及角点信息有丢失和位置偏移现象,所以后面又提出一种名为 shi_tomasi的角 ...
- 数据分析与R语言-概念点(一)
一.数据分析 1.数据分析的多层模型 常用的统计量 常用的算法 常用的数据分析工具 常见的报表 二.R语言 1.什么是R语言? R是用于统计分析.绘图的语言和操作环境.R是属于GNU系统的一个 ...
- 9、手把手教你Extjs5(九)使用MVVM特性控制菜单样式
菜单的样式多了,怎么可以灵活的切换是个问题. 在使用标准菜单的时候,在菜单最前面有二个按钮,可以切换到树状菜单和按钮菜单. 在树状菜单的显示区,可以切换换到标准菜单,以及折叠式菜单. 切换到按钮菜单之 ...
- 10天学会phpWeChat——第八天:Form类,丰富表单提交的字段类型
通过前面七讲的系列教程,我们完成了一个包含后台并自适应PC+h5移动端的文章管理模块. 在实际的生产环境中,文章投稿.商品上传等操作并不会简单局限于一个text和textarea组成的表单.在实际中, ...
- 解决tomcat运行报错java.lang.UnsatisfiedLinkError: apache-tomcat-7.0.37\bin\tcnative-1.dll:Can load AMD 64
http://www.apache.org/dist/tomcat/tomcat-connectors/native/ 到该地址下下载一个tomcat-native-1.2.2-win32-bin压缩 ...
- Druid的简介及功能
Druid首先是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBoss DataSou ...
- Mac iTerm2使用rz、sz从远程上传下载文件
使用 brew install lrzsz .如果安装遇到错误的话,使用以下方法: 在mac终端下运行: brew install lrzsz (安装教程:http://brew.sh/index_z ...
- STM32F412应用开发笔记之八:迪文串口屏显示驱动
迪文的显示屏使用起来比较方便,其使用串口通讯,即可支持RS232,又可以支持TTL电平.在NUCLEO-F412ZG实验板上,USART2已经引到了CN9上,我们就利用USART2来实现与迪文串口屏的 ...
- 如何解决Visual Studio2012 与此版本的Windows不兼容
解决方案: http://www.microsoft.com/zh-CN/download/details.aspx?id=36020 下载更新