using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.DirectoryServices ;
using Palau.DAL ;

namespace WindowsApplication1
{
    /**//// <summary>
    /// Form1 的摘要说明。
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.Button button1;
        private System.Windows.Forms.RichTextBox richTextBox1;
        private System.Windows.Forms.TextBox textBox1;
        /**//// <summary>
        /// 必需的设计器变量。
        /// </summary>
        private System.ComponentModel.Container components = null;

        public Form1()
        {
            //
            // Windows 窗体设计器支持所必需的
            //
            InitializeComponent();

            //
            // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
            //
        }

        /**//// <summary>
        /// 清理所有正在使用的资源。
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null) 
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }

        Windows 窗体设计器生成的代码#region Windows 窗体设计器生成的代码
        /**//// <summary>
        /// 设计器支持所需的方法 - 不要使用代码编辑器修改
        /// 此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {
            this.button1 = new System.Windows.Forms.Button();
            this.richTextBox1 = new System.Windows.Forms.RichTextBox();
            this.textBox1 = new System.Windows.Forms.TextBox();
            this.SuspendLayout();
            // 
            // button1
            // 
            this.button1.Location = new System.Drawing.Point(328, 232);
            this.button1.Name = "button1";
            this.button1.TabIndex = 0;
            this.button1.Text = "UPDATE";
            this.button1.Click += new System.EventHandler(this.button1_Click);
            // 
            // richTextBox1
            // 
            this.richTextBox1.Location = new System.Drawing.Point(24, 16);
            this.richTextBox1.Name = "richTextBox1";
            this.richTextBox1.Size = new System.Drawing.Size(448, 192);
            this.richTextBox1.TabIndex = 1;
            this.richTextBox1.Text = "";
            // 
            // textBox1
            // 
            this.textBox1.Location = new System.Drawing.Point(144, 232);
            this.textBox1.Name = "textBox1";
            this.textBox1.TabIndex = 2;
            this.textBox1.Text = "GES";
            // 
            // Form1
            // 
            this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
            this.ClientSize = new System.Drawing.Size(496, 273);
            this.Controls.Add(this.textBox1);
            this.Controls.Add(this.richTextBox1);
            this.Controls.Add(this.button1);
            this.Name = "Form1";
            this.Text = "Create User";
            this.ResumeLayout(false);

        }
        #endregion

        /**//// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main() 
        {
            Application.Run(new Form1());
        }

        private void AddUser(DirectoryEntry obj,PersistBroker broker)
        {
            string sSQL = @"INSERT INTO TBLSYSUSER([USE_CODE],[USE_NAME],[USE_PWD],[USE_WORKNO],[USE_DOMAIN],[USE_EMAIL],[USE_LEVEL],"
                +"[USE_MSN], [USE_QQ], [USE_EXTPHONE], [USE_MOBILE], [USE_HOMEPHONE], [USE_BIRTHDAY], [USE_LOVE], [USE_ADDR], [USE_WEMAIL],"
                +"[USE_HOMEPAGE], [USE_KNOWLEDGE],[USE_ACTIVE],[USE_SEX],[TEM_CODE],[USE_IFCUSTOMER],[DEP_CODE],[USE_CREATEDATE]) VALUES(@CODE,@NAME, @PWD,@WORKNO,@DOMAIN,@EMAIL, @LEVEL, @MSN,@QQ,@EXTPHONE,@MOBILE,"
                + "@HOMEPHONE,@BIRTHDAY,@LOVE,@ADDR,@WEMAIL,@HOMEPAGE,@KNOWLEDGE,@ACTIVE,@SEX,@TEM_CODE,@IFCUSTOMER,@DEP_CODE,@CREATEDATE) ";
            string[] paramNames = new string[]{"@CODE","@NAME","@PWD","@WORKNO","@DOMAIN","@EMAIL","@LEVEL","@MSN","@QQ","@EXTPHONE",
                                                  "@MOBILE","@HOMEPHONE","@BIRTHDAY","@LOVE","@ADDR","@WEMAIL","@HOMEPAGE","@KNOWLEDGE",
                                                  "@ACTIVE","@SEX","@TEM_CODE","@IFCUSTOMER","@DEP_CODE","@CREATEDATE"};
            string SSQL = @"SELECT 1 FROM TBLSYSUSER WHERE USE_CODE=@CODE";
            string[] paramsName = new string[]{"@CODE"};
            

            if(obj.SchemaClassName.Trim().ToUpper()=="ORGANIZATIONALUNIT")
            {
                string strDept = obj.Name.Trim().Split('=')[1] ;
                DirectoryEntries subList = obj.Children ;
                foreach(DirectoryEntry objSubDE in subList)
                {
                    if(objSubDE.SchemaClassName.Trim().ToUpper()=="USER")
                    {
                        AddUser(objSubDE,broker);
                    }
                }
            }
            else if(obj.SchemaClassName.Trim().ToUpper()=="USER")
            {
                
                string Code = obj.Properties["name"].Value==null?"":obj.Properties["name"].Value.ToString() ;

                string Name = obj.Properties["sn"].Value == null ? "" : obj.Properties["sn"].Value.ToString();                
                string department = obj.Properties["department"].Value == null ? "" : obj.Properties["department"].Value.ToString();
                string workno = obj.Properties["wWWHomePage"].Value == null ? "" : obj.Properties["wWWHomePage"].Value.ToString();
                if(workno == "http://personal/kevin jiang/") {workno="0406102";} 
                string phone = obj.Properties["telephoneNumber"].Value == null ? "" : obj.Properties["telephoneNumber"].Value.ToString();
                string Level = obj.Properties["title"].Value == null ? "" : obj.Properties["title"].Value.ToString();
                
                string address = obj.Properties["co"].Value == null ? "" : obj.Properties["co"].Value.ToString() + " " + obj.Properties["l"].Value == null ? "" : obj.Properties["l"].Value.ToString();
                string createdate = obj.Properties["whenCreated"].Value == null ? "" : obj.Properties["whenCreated"].Value.ToString() ;
                string mail = obj.Properties["mail"].Value == null ? "" : obj.Properties["mail"].Value.ToString();
                if(workno != string.Empty || Code != "asf" )
                {
                    
                    object[] paramValues = new object[]{Code,Name,"9D6C539199026AF7",workno,"BQC",mail,Level,"","",phone,
                                                           "","","1970-1-1","","",address,"","","Y","1",department,"N",department,createdate};
                    

                    object[] paramsValue = new object[]{Code};
                    DataSet ds = broker.ExecuteDataset(SSQL,CommandType.Text,paramsName,paramsValue);
                    if(ds.Tables[0].Rows.Count == 0)
                    {
                        broker.ExecuteNonQuery(sSQL,CommandType.Text,paramNames,paramValues) ;
                    
                    
                    }
                    else
                    {
                        string sSQLU = @"UPDATE TBLSYSUSER SET [USE_NAME]=@NAME, [USE_WORKNO]=@WORKNO, [USE_DOMAIN]=@DOMAIN, "+
                            "[USE_EMAIL]=@EMAIL, [USE_LEVEL]=@LEVEL, [USE_EXTPHONE]=@EXTPHONE,"+
                            "[USE_ADDR]=@ADDR, [USE_ACTIVE]=@ACTIVE,[DEP_CODE] = @DEP_CODE,[USE_CREATEDATE]=@CREATEDATE,"+
                            "[USE_IFCUSTOMER]=@IFCUSTOMER WHERE [USE_CODE]=@CODE";
                        broker.ExecuteNonQuery(sSQLU,CommandType.Text,paramNames,paramValues) ;
                
                    }
                }
                this.richTextBox1.AppendText( department + "\t" +  Code  + "\t" + Name + "\r\n") ;
            }
        }

        private void button1_Click(object sender, System.EventArgs e)
        {
            this.richTextBox1.Text = "";
            try
            {
                string conn = System.Configuration.ConfigurationSettings.AppSettings["CONN"];
                PersistBroker broker = PersistBroker.Instance(conn,"SQLSERVER") ;
                broker.Open() ;

                DirectoryEntry de = new DirectoryEntry() ;
                string dept = this.textBox1.Text;
                if(dept != string.Empty)
                {
                    dept= "OU="+dept+",";
                }
                de.Path = "LDAP://"+dept+"OU=G00,OU=Users Guru,DC=mycom,dc=corp,dc=com" ;
                de.Username= "mycom\\andy luo";//System.Configuration.ConfigurationSettings.AppSettings["USER"];
                de.Password = "";// System.Configuration.ConfigurationSettings.AppSettings["PWD"] ;
                DirectoryEntries list = de.Children ;
                foreach(DirectoryEntry objDE in list)
                {
                    this.AddUser(objDE,broker);
                                
                broker.Close() ;
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message) ;
            }
        }
    }
}

在asp.net如何取得ActiveDirectory域中用户的信息,比如工号,邮件地址等等相关推荐

  1. oauth2中用户的信息如何动态获取和存储_oAuth2.0 简介

    本文将对oAuth 2.0协议做一个简单介绍. 本文主要内容翻译自文章:OAuth 2 Simplified. 本文分为如下几个部分: 角色:应用.api和用户 创建一个app 授权:获取访问toke ...

  2. linux系统中用户账户信息保存在,【填空题】Linux系统中,除密码外的用户账户信息保存在 配置文件中...

    参考答案如下 填空题非竞争性拮抗药 正当防卫中的不法侵害已经开始,系统信息下列说法中错误的是( ) 患者,中除账户配置文男性,中除账户配置文47岁.连日来在炼钢炉旁工作,虽感疲乏,但仍坚持操作.今日上 ...

  3. asp.net 1.1/ 2.0 中快速实现单点登陆

    问题: 网站有bbs.xxx.com / main.xxx.com / pay.xxx.com 这三个不同的二级域名站,要实现任何一二级域名处登陆,其他各二级域名的站均登陆. 解决办法: 设置cook ...

  4. 在ASP.NET AJAX 1.0框架中访问Web服务

    一. 简介     如今,微软最新推出的AJAX框架为ASP.NET AJAX 1.0(下载地址为[url]http://ajax.asp.net/downloads/default.aspx[/ur ...

  5. 以下是关于ASP.NET中保存各种信息的对象的比较,理解这些对象的原理,对制作完善的程序来说是相当有必要的(摘至互联网,并非原创--xukunping)...

    在ASP.NET中,有很多种保存信息的对象.例如:APPlication,Session,Cookie,ViewState和Cache等,那么它们有什么区别呢?每一种对象应用的环境是什么?     为 ...

  6. asp.net Session在web.config中的三种配置方式——详解

    这段代码就是设置session在web.config中的存储方式. < sessionState mode="Off|InProc|StateServer|SQLServer" ...

  7. 跨平台应用集成(在ASP.NET Core MVC 应用程序中集成 Microsoft Graph)

    1 谈一谈.NET 的跨平台 终于要写到这一篇了.跨平台的支持可以说是 Office 365 平台在设计伊始就考虑的目标.我在前面的文章已经提到过了,Microsoft Graph 服务针对一些主流的 ...

  8. ASP.Net学习笔记015--ASP.Net中使用Cookie

    ASP.Net学习笔记015--ASP.Net中使用Cookie 表单数据欺骗: 原理跟收到欺骗短信一样,移动信号塔[基站],伪装的移动信号塔会屏蔽移动信号,并且 在信号范围内的手机会自动切换为接收伪 ...

  9. ASP.NET MVC和ASP.NET Web API跨域请求问题解决方案【最全】

    无论是ASP.NET MVC和ASP.NET Web API跨域请求大致分成2种方式 第一种:web.config 配置 第二种:用HttpContext.Response.AppendHeader设 ...

最新文章

  1. 语言处理想突破,三座大山必须过
  2. 公有云和私有云,哪种是大势所趋?
  3. n!mod p 的求法 数学
  4. 不使用物理引擎,自己动手做真实物理的模拟投篮游戏
  5. 表单设置默认值_你还不知道表单怎么设计吗?看这里!
  6. 实体类多层嵌套 遍历_JS获取元素多层嵌套思路详解
  7. Atitit.jdk java8的语法特性详解 attilax 总结
  8. 【面试常问】BS 与 CS 的联系与区别
  9. 《JAVA 技术》第二次作业
  10. Markdown 符号表示
  11. 15家银行信用卡积分含金量大比拼
  12. Excel处理 中文转拼音缩写
  13. python are you ready_如果要检查recv_ready(),是否必须检查exit_status_ready?
  14. 追风筝的人 第三章
  15. 完全卸载3dmax(以及桌子全家产品)
  16. Opencv(C++)笔记--模板匹配cv::matchTemplate()和最值计算cv::minMaxLoc()
  17. 二,本地应用(v-text,v-html,v-on;v-show,v-if,*v-bind;v-for,v-model;v-cloak ;v-once; v-pre ;自定义 指令)
  18. 软通动力上市难掩隐忧,软件外包模式或受冲击
  19. python成绩查询系统_Python爬虫实战:登录教务系统查成绩
  20. ubuntu创建快捷方式和添加到收藏夹

热门文章

  1. easy-excel导入导出excel(待完善)
  2. Hive与数据库的异同
  3. Visual Studio新建的源文件的默认编码
  4. 【BUG解析】调用PagerAdapter.notifyDataSetChanged()不更新
  5. 一刀两断划分子网例子
  6. C++ Exercises(十六)---Ethernet帧包结构解析
  7. Django项目部署:使用uwsgi和nginx的方式
  8. PHP获取访客ip、系统、浏览器等信息[转]
  9. 澳政府投资光伏发电 内外资项目角逐高额补助
  10. java读取某个文件夹下的所有文件