using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.DirectoryServices; namespace Project._Common { public partial class fADSUserList : FCOMMON.fBase { public fADSUserList() { InitializeComponent(); } private void fADSUserList_Load(object sender, EventArgs e) { this.lbDomain.Text = this.DomainName(); this.btInsert.Visible = (FCOMMON.info.Login.level > 9); this.tbEntry.Text = "LDAP://OU=Office,OU=Users,OU=People,OU=K4,DC=kr,DC=ds,DC=amkor,DC=com"; this.tbEntry.Enabled = this.btInsert.Visible; } public string DomainName() { var objRootDSE = new DirectoryEntry("LDAP://RootDSE"); return objRootDSE.Properties["defaultNamingContext"][0].ToString(); } private void toolStripButton1_Click(object sender, EventArgs e) { this.listView1.Items.Clear(); this.listView1.Columns.Clear(); this.listView1.CheckBoxes = true; this.listView1.Columns.Add("sn"); this.listView1.Columns.Add("cn"); this.listView1.Columns.Add("disp"); this.listView1.Columns.Add("dept"); this.listView1.Columns.Add("title"); this.listView1.Columns.Add("tel"); this.listView1.Columns.Add("mail"); this.listView1.Columns.Add("pager"); this.listView1.Columns.Add("empno"); this.listView1.Columns.Add("when"); this.listView1.Visible = false; this.listView1.View = View.Details; string[] propliest = new string[] { "whenCreated", "telephonenumber", "title", "employeeNumber", "department", "displayName", "mail", "pager", "sn", "cn" }; Boolean skipuser = false; string dept = string.Empty; string whencre = string.Empty; string empno = string.Empty; string disp = string.Empty; string cn = string.Empty; string sn = string.Empty; string mail = string.Empty; string title = string.Empty; string pager = string.Empty; string tel = string.Empty; var deParent = new DirectoryEntry(tbEntry.Text); string Nodename = ""; try { Nodename = deParent.SchemaClassName; } catch (Exception ex) { Util.MsgE(ex.Message + "\n" + tbEntry.Text); Nodename = string.Empty; } if (Nodename != "") { if (deParent.Name.StartsWith("CN")) { //특정사용자 조회 foreach (string listIter in propliest) { foreach (object Iter in deParent.Properties[listIter.ToString()]) { string strvalue = Iter.ToString(); switch (listIter.ToString().ToLower()) { case "department": dept = strvalue; // var search = toolStripTextBox1.Text.Trim(); // if (search != "") if (dept.IndexOf(search) == -1) skipuser = true; break; case "whencreated": whencre = strvalue; break; case "title": title = strvalue; break; case "telephonenumber": tel = strvalue; break; case "employeenumber": empno = strvalue; break; case "displayname": disp = strvalue; break; case "mail": mail = strvalue; break; case "pager": pager = strvalue; break; case "sn": sn = strvalue; break; case "cn": cn = strvalue; break; } // if (skipuser) break; } // if (skipuser) break; } var lv = this.listView1.Items.Add(sn); lv.Checked = true; lv.SubItems.Add(cn); lv.SubItems.Add(disp); lv.SubItems.Add(dept); lv.SubItems.Add(title); lv.SubItems.Add(tel); lv.SubItems.Add(mail); lv.SubItems.Add(pager); lv.SubItems.Add(empno); lv.SubItems.Add(whencre); } else { foreach (DirectoryEntry deChild in deParent.Children) { skipuser = false; dept = string.Empty; whencre = string.Empty; empno = string.Empty; disp = string.Empty; cn = string.Empty; sn = string.Empty; mail = string.Empty; title = string.Empty; pager = string.Empty; tel = string.Empty; foreach (string listIter in propliest) { foreach (object Iter in deChild.Properties[listIter.ToString()]) { string strvalue = Iter.ToString(); switch (listIter.ToString().ToLower()) { case "department": dept = strvalue; var search = toolStripTextBox1.Text.Trim(); if (search != "") if (dept.IndexOf(search) == -1) skipuser = true; break; case "whencreated": whencre = strvalue; break; case "title": title = strvalue; break; case "telephonenumber": tel = strvalue; break; case "employeenumber": empno = strvalue; break; case "displayname": disp = strvalue; break; case "mail": mail = strvalue; break; case "pager": pager = strvalue; break; case "sn": sn = strvalue; break; case "cn": cn = strvalue; break; } if (skipuser) break; } if (skipuser) break; } if (sn == "" || pager == "" || sn.ToUpper().StartsWith("k4") || sn.ToUpper().StartsWith("test")) skipuser = true; if (skipuser) continue; var lv = this.listView1.Items.Add(sn); lv.Checked = true; lv.SubItems.Add(cn); lv.SubItems.Add(disp); lv.SubItems.Add(dept); lv.SubItems.Add(title); lv.SubItems.Add(tel); lv.SubItems.Add(mail); lv.SubItems.Add(pager); lv.SubItems.Add(empno); lv.SubItems.Add(whencre); if (listView1.Items.Count > 500) break; } } } FCOMMON.Util.MsgI("exit"); this.listView1.Visible = true; } private void btInsert_Click(object sender, EventArgs e) { System.Text.StringBuilder sb = new StringBuilder(); var items = this.listView1.CheckedItems; sb.AppendLine("현재 목록의 선택된 자료를 입력하시겠습니까?"); sb.AppendLine("건수 : " + items.Count.ToString()); var dlg = FCOMMON.Util.MsgQ(sb.ToString()); if (dlg != System.Windows.Forms.DialogResult.Yes) return; this.prb1.Maximum = items.Count; this.prb1.Value = 0; foreach(ListViewItem item in items) { string sn = item.SubItems[0].Text; string cn = item.SubItems[1].Text; string disp = item.SubItems[2].Text;// lv.SubItems.Add(disp); string dept = item.SubItems[3].Text; // lv.SubItems.Add(dept); string title = item.SubItems[4].Text;// lv.SubItems.Add(title); string tel = item.SubItems[5].Text; // lv.SubItems.Add(tel); string mail = item.SubItems[6].Text; // lv.SubItems.Add(mail); string pager = item.SubItems[7].Text; // lv.SubItems.Add(pager); string empno = item.SubItems[8].Text; // lv.SubItems.Add(empno); string whencre = item.SubItems[9].Text; // lv.SubItems.Add(whencre); try { taUser.InsertADSInfo( pager, disp, sn, dept, mail, tel, empno,title, whencre, "Auto Gen", FCOMMON.info.Login.no, DateTime.Now ); } catch (Exception eX) { Console.WriteLine(sn + eX.Message); } this.prb1.Value += 1; } } private void allSelectToolStripMenuItem_Click(object sender, EventArgs e) { foreach (ListViewItem item in this.listView1.Items) item.Checked = true; } private void deSelectToolStripMenuItem_Click(object sender, EventArgs e) { foreach (ListViewItem item in this.listView1.Items) item.Checked = !item.Checked; } private void unSelectToolStripMenuItem_Click(object sender, EventArgs e) { foreach (ListViewItem item in this.listView1.Items) item.Checked = false; } } }