当前位置:  编程技术>.net/c#/asp.net
本页文章导读:
    ▪C# AD(Active Directory)域信息同步,组织单位、用户等信息查询      接上篇 Windows Server 2008 R2 配置AD(Active Directory)域控制器对AD域结合常见需求用C#进行一些读取信息的操作^_^! 目录 示例准备知识了解读取AD域信息示例DirectorySearcher.Filter属性扩充说明用户.........
    ▪jquery中如何获得服务器控件      jquery中 $("#<%=StoreName.ClientID %>").focus(function() {                $("#<%=Label5.ClientID %>").val("请输入真实的店铺名称");   &.........
    ▪如何让div旋转一定的角度      m11,m12,m21.m22是控制角度的<html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>DIV旋转属性的演示</title><meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8".........

[1]C# AD(Active Directory)域信息同步,组织单位、用户等信息查询
    来源:    发布时间: 2013-10-22

接上篇 Windows Server 2008 R2 配置AD(Active Directory)域控制器

对AD域结合常见需求用C#进行一些读取信息的操作^_^!

 

目录

 

  • 示例准备
  • 知识了解
  • 读取AD域信息示例
  • DirectorySearcher.Filter属性扩充说明
  • 用户属性扩充说明(含图文属性对照)
    • 常规
    • 地址
    • 帐户
    • 电话
    • 组织
  • 示例下载

 

示例准备
  • 打开上一篇文章配置好的AD域控制器
  • 开始菜单-->管理工具-->Active Directory 用户和计算机
  • 新建组织单位和用户

   

  • 新建层次关系如下:

  

 

知识了解

  我们要用C#访问Active Directory非常容易,主要用到

  轻量目录访问协议 (LDAP)

  System.DirectoryServices命名空间下的两个组件类

  DirectoryEntry和DirectorySeacher

 

读取AD域信息示例

   示例在Framework 3.5下用Winform程序编写

   主要结合常见需求读取组织单位(OU)及用户(User)信息,以及同步组织单位和用户的层次关系;

     比较着重的还是用户的信息,特别是帐号、邮箱、SID等信息;

  

  • 下面我们开始连接域,并读取出示例准备中键好的组织单位和用户  

  首先编写代码用LDAP尝试对域进行访问

  形式:LDAP://Domain

#region## 是否连接到域
/// <summary>
/// 功能:是否连接到域
/// 作者:Wilson
/// 时间:2012-12-15
/// http://msdn.microsoft.com/zh-cn/library/system.directoryservices.directoryentry.path(v=vs.90).aspx
/// </summary>
/// <param name="domainName">域名或IP</param>
/// <param name="userName">用户名</param>
/// <param name="userPwd">密码</param>
/// <param name="entry">域</param>
/// <returns></returns>
private bool IsConnected(string domainName, string userName, string userPwd, out DirectoryEntry domain)
{
domain = new DirectoryEntry();
try
{
domain.Path = string.Format("LDAP://{0}", domainName);
domain.Username = userName;
domain.Password = userPwd;
domain.AuthenticationType = AuthenticationTypes.Secure;

domain.RefreshCache();

return true;
}
catch(Exception ex)
{
LogRecord.WriteLog("[IsConnected方法]错误信息:" + ex.Message);
return false;
}
}
#endregion

   传用参数,调IsConnected方法,结果如下

  

  • 连接上AD域后,接着我们找到根OU
#region## 域中是否存在组织单位
/// <summary>
/// 功能:域中是否存在组织单位
/// 作者:Wilson
/// 时间:2012-12-15
/// </summary>
/// <param name="entry"></param>
/// <param name="ou"></param>
/// <returns></returns>
private bool IsExistOU(DirectoryEntry entry, out DirectoryEntry ou)
{
ou = new DirectoryEntry();
try
{
ou = entry.Children.Find("OU=" + txtRootOU.Text.Trim());

return (ou != null);
}
catch(Exception ex)
{
LogRecord.WriteLog("[IsExistOU方法]错误信息:" + ex.Message);
return false;
}
}
#endregion

  传入以数,调用IsExistOU方法,结果如下

  

  • 下面来开始读取组织单位及用户的信息。

   示例为了看出层次关系及导出信息是类型区分,给OU和User新建了一个实体类和一个类型的枚举 

#region## 类型
/// <summary>
/// 类型
/// </summary>
public enum TypeEnum : int
{
/// <summary>
/// 组织单位
/// </summary>
OU = 1,

/// <summary>
/// 用户
/// </summary>
USER = 2
}
#endregion

#region## Ad域信息实体
/// <summary>
/// Ad域信息实体
/// </summary>
public class AdModel
{
public AdModel(string id, string name, int typeId, string parentId)
{
Id = id;
Name = name;
TypeId = typeId;
ParentId = parentId;
}

public string Id { get; set; }

public string Name { get; set; }

public int TypeId { get; set; }

public string ParentId { get; set; }
}
#endregion

   下面读取信息

private List<AdModel> list = new List<AdModel>();

     #region## 同步
/// <summary>
/// 功能:同步
/// 创建人:Wilson
/// 创建时间:2012-12-15
/// </summary>
/// <param name="entryOU"></param>
public void SyncAll(DirectoryEntry entryOU)
{
DirectorySearcher mySearcher = new DirectorySearcher(entryOU, "(object); //查询组织单位

DirectoryEntry root = mySearcher.SearchRoot; //查找根OU

SyncRootOU(root);

StringBuilder sb = new StringBuilder();

sb.Append("\r\nID\t帐号\t类型\t父ID\r\n");

foreach (var item in list)
{
sb.AppendFormat("{0}\t{1}\t{2}\t{3}\r\n", item.Id, item.Name, item.TypeId, item.ParentId);
}

LogRecord.WriteLog(sb.ToString());

MessageBox.Show("同步成功", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);

Application.Exit();
}
#endregion

#region## 同步根组织单位
/// <summary>
/// 功能: 同步根组织单位
/// 创建人:Wilson
/// 创建时间:2012-12-15
/// </summary>
/// <param name="entry"></param>
private void SyncRo
    
[2]jquery中如何获得服务器控件
    来源:    发布时间: 2013-10-22

jquery中 

$("#<%=StoreName.ClientID %>").focus(function() {
                $("#<%=Label5.ClientID %>").val("请输入真实的店铺名称");
                $("#<%=Label5.ClientID %>").css("color", "#666");
            });

html中

 <table>
                <tr>
                    <td>
                        店铺名称:
                    </td>
                    <td>
                        <asp:TextBox ID="StoreName" runat="server"></asp:TextBox>
                    </td>
                    <td>
                        <asp:Label ID="Label5" runat="server" Text=" 真实的店铺名称,0-10个字。(必填项)"></asp:Label>
                    </td>
                </tr>
            </table>

本文链接


    
[3]如何让div旋转一定的角度
    来源:    发布时间: 2013-10-22

m11,m12,m21.m22是控制角度的

<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>DIV旋转属性的演示</title>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />
<style type="text/css">
body {
font-family: "Arial", sans-serif;
}
#example {
position: absolute;
border: #09F solid 1px;
font-weight: 900;
padding: 10px;
display: block;
width: 500px;
height: 400px;
margin-top: -1px;
margin-left: -1px;
transform: rotate(40deg);
-o-transform: rotate(40deg);
-webkit-transform: rotate(40deg);
-moz-transform: rotate(40deg);
filter: progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand', M11=1.2660444431189777, M12=-0.3327876096865394, M21=0.1127876096865398, M22=0.9660444431189779);
}
</style>
<!--[if IE]>
<style type="text/css">
#example {
top: 50px;
left: 50px;
}
</style>
<![endif]-->
</head>
<body>
<div id="example"> 旋转成功</div>
</body>
</html>

本文链接


    
最新技术文章:
▪C#通过IComparable实现ListT.sort()排序
▪C#实现对Json字符串处理实例
▪Winform实现抓取web页面内容的方法
▪Winform实现将网页生成图片的方法
▪C#控制台程序中处理2个关闭事件的代码实例
▪WinForm实现同时让两个窗体有激活效果的特效...
▪WinForm实现拦截窗体上各个部位的点击特效实...
▪用C#的params关键字实现方法形参个数可变示例
▪C#判断某程序是否运行的方法
▪C#验证码识别基础方法实例分析
▪C#通过WIN32 API实现嵌入程序窗体
▪C#实现获取鼠标句柄的方法
▪C#事件处理和委托event delegate实例简述
▪C#获取程序文件相关信息的方法
▪C#中的除法运算符与VB.NET中的除法运算符
▪ASP.NET MVC 5使用X.PagedList.Mvc进行分页教程(PagedLi...
▪Base64编码解码原理及C#编程实例
▪C#实现的优酷真实视频地址解析功能(2014新算...
▪C#和SQL实现的字符串相似度计算代码分享
数据库 iis7站长之家
▪C#反射之基础应用实例总结
▪C#生成单页静态页简单实例
▪C#实现SMTP邮件发送程序实例
▪C#实现随鼠标移动窗体实例
▪C#使用GDI+创建缩略图实例
▪C#实现通过模板自动创建Word文档的方法
▪C#中Response.Write常见问题汇总
▪C#中多态、重载、重写区别分析
▪WinFrom中label背景透明的实现方法
▪C#中out保留字用法实例分析
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3