直接上干货,核心代码如下,读取出来相应的用户清单到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域用户清单的更多相关文章

  1. java web 中 读取windows图标并显示

    java web中读取windows对应文件名的 系统图标 ....显示 1.获取系统图标工具类 package utils;  import java.awt.Graphics;  import j ...

  2. 在Windows Server 2008 R2中使用web方式修改域用户账户密码

    在Windows的domain环境下,加域的客户端修改账户密码是一件很easy的事情:即使没有加域的客户端如果组织中,使用Exchange邮件系统,借助Exchange的owa也可以轻松修改账户密码. ...

  3. WINDOWS 2008 SERVER域用户自动登陆

    The user I wanted to auto-logon as didn’t have a password, this reg hack worked instead: HKEY_LOCAL_ ...

  4. Django开发文档-域用户集成登录

    项目概述: 一般在企业中,用户以WINDOWS的域用户统一的管理,所以以Django快速开发的应用,不得不集成AD域登录. 网上一般采用django-python3-ldap的库来做集成登录,但是本方 ...

  5. Window通过Web方式修改域用户密码

    如何通过web方式修改域用户密码: 1.在Windows Server 2003上,系统默认提供了iisadmpwd作为一种修改域用户密码的方式 2.在Windows Server 2008上,可以提 ...

  6. SharePoint 2010中重置windows 活动目录(AD)域用户密码的WebPart(免费下载)

    由于SharePoint 2013推出不久,并非所有的企业都会升级到SharePoint 2013的,毕竟升级不是打打补丁这么简单,更多的企业还是使用Sharepoint 2010版本的,因此本人自行 ...

  7. SharePoint 2013中修改windows 活动目录(AD)域用户密码的WebPart(免费下载)

    前段时间工作很忙,好久没更新博客了,趁国庆休假期间,整理了两个之前积累很实用的企业集成组件,并在真正的大型项目中经受住了考验:.Net版SAP RFC适配器组件和SharePoint 2013修改AD ...

  8. Windows AD域升级方

    前面的博客中我谈到了网络的基本概念和网络参考模型,今天我们来谈企业中常用的技术,Windows AD 域,今天我的笔记将重点讲解Windows AD 域的升级和迁移方法,通过3个小实验进行配置,真实环 ...

  9. windows AD域安装及必要设置

    一.安装AD域 运行dcpromo命令,安装AD域. 步骤: 1.win+R 2.dcpromo 图例: 百度百科关于“dcpromo”解释: dcpromo命令是一个“开关”命令.如果Windows ...

随机推荐

  1. js 日期控件laydate使用

    官网  http://sentsin.com/layui/laydate/ 1. 下载官网上的压缩包,解压后只需要复制laydate 文件夹到你的项目中; 2. 在页面引入  <script t ...

  2. 所有事件event集锦

    'mousedown touchstart', 'mousemove touchmove', 'mouseup mouseleave touchend touchleave touchcancel', ...

  3. HTML学习(五)链接

    1.创建文本链接 <html> <body> <p> <a href="/index.html">本文本</a> 是一个 ...

  4. Spring MVC之Action输入参数

    第一部分:Action输入参数Spring MVC 通过@RequestMapping注解映射请求,最终的真正执行代码为处理器方法,即@RequestMapping注解的方法.Spring MVC方法 ...

  5. 转:HTTPS 升级指南

    上一篇文章我介绍了 HTTP/2 协议 ,它只有在 HTTPS 环境才会生效. 为了升级到 HTTP/2 协议,必须先启用 HTTPS.如果你不了解 HTTPS 协议(学名 TLS 协议),可以参考我 ...

  6. html&&css 基础知识笔记

    diV有 Class.Style.title.ID 等属性. 1.margin 空出边缘 margin:上 下 左 右(按顺时针顺序,缺少某一方向则对称) 2.border 边框(三要素:像素 形状 ...

  7. reg 正则

    //转化为camel形式 var text = 'border-color-base'; text.replace(/-(\w{1})/g, function (match, chr1) { retu ...

  8. post请求时2种传参方式

    @Testpublic void dopost(){ String httpurl = "https://jin.caimao.com/api/user/loginSalt"; M ...

  9. 多因子降维法(MDR,multifactor dimensionality reduction)

    多因子降维法(MDR,Multifactor Dimensionality Reduction ) MDR是近年统计学中发展起来的一种新的分析方法.其中,“因子” 即交互作用研究中的变量,“维” 是指 ...

  10. IE6-能让png图片有透明效果的js代码

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...