Mega Code Archive

 
Categories / C# / Web Services
 

DirectoryServices GUI

using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Windows.Forms; using System.Text; using System.DirectoryServices; public class UserSearchForm : Form {     private string username;     private string password;     private string hostname;     private string schemaNamingContext;     private string defaultNamingContext;     public UserSearchForm() {         InitializeComponent();     }     protected void SetLogonInformation() {         username = (textBoxUsername.Text == "" ? null : textBoxUsername.Text);         password = (textBoxPassword.Text == "" ? null : textBoxPassword.Text);         hostname = textBoxHostname.Text;         if (hostname != "") hostname += "/";     }     protected void SetNamingContext() {         using (DirectoryEntry de = new DirectoryEntry()) {             string path = "LDAP://" + hostname + "root";             de.Username = username;             de.Password = password;             de.Path = path;             schemaNamingContext = de.Properties["schemaNamingContext"][0].ToString();             defaultNamingContext = de.Properties["defaultNamingContext"][0].ToString();         }     }     protected void SetUserProperties(string schemaNamingContext) {         List<string> properties = new List<string>();         string[] data = GetSchemaProperties(schemaNamingContext, "User");         properties.AddRange(GetSchemaProperties(schemaNamingContext, "Organizational-Person"));         listBoxProperties.Items.Clear();         foreach (string s in properties) {             listBoxProperties.Items.Add(s);         }     }     protected string[] GetSchemaProperties(string schemaNamingContext, string objectType) {         string[] data;         using (DirectoryEntry de = new DirectoryEntry()) {             de.Username = username;             de.Password = password;             de.Path = "LDAP://" + hostname + "CN=" + objectType + "," + schemaNamingContext;             PropertyCollection properties = de.Properties;             PropertyValueCollection values = properties["systemMayContain"];             data = new String[values.Count];             values.CopyTo(data, 0);         }         return data;     }     private void OnLoadProperties(object sender, EventArgs e) {         SetLogonInformation();         SetNamingContext();         SetUserProperties(schemaNamingContext);     }     private void OnSearch(object sender, EventArgs e) {         FillResult();     }     protected string[] GetProperties() {         string[] properties = new string[listBoxProperties.SelectedItems.Count];         int i = 0;         foreach (string s in listBoxProperties.SelectedItems) {             properties[i++] = s;         }         return properties;     }     protected void FillResult() {         using (DirectoryEntry root = new DirectoryEntry()) {             root.Username = username;             root.Password = password;             root.Path = "LDAP://" + hostname + defaultNamingContext;             using (DirectorySearcher searcher = new DirectorySearcher()) {                 searcher.SearchRoot = root;                 searcher.SearchScope = SearchScope.Subtree;                 searcher.Filter = textBoxFilter.Text;                 searcher.PropertiesToLoad.AddRange(GetProperties());                 SearchResultCollection results = searcher.FindAll();                 StringBuilder summary = new StringBuilder();                 foreach (SearchResult result in results) {                     foreach (string propName in result.Properties.PropertyNames) {                         foreach (string s in result.Properties[propName]) {                             summary.Append(" " + propName + ": " + s + "\r\n");                         }                     }                     summary.Append("\r\n");                 }                 textBoxResults.Text = summary.ToString();             }         }     }     private void InitializeComponent() {         this.splitContainer1 = new System.Windows.Forms.SplitContainer();         this.buttonSearch = new System.Windows.Forms.Button();         this.label9 = new System.Windows.Forms.Label();         this.textBoxFilter = new System.Windows.Forms.TextBox();         this.label8 = new System.Windows.Forms.Label();         this.label7 = new System.Windows.Forms.Label();         this.listBoxProperties = new System.Windows.Forms.ListBox();         this.label6 = new System.Windows.Forms.Label();         this.buttonLoadProperties = new System.Windows.Forms.Button();         this.label5 = new System.Windows.Forms.Label();         this.groupBox1 = new System.Windows.Forms.GroupBox();         this.textBoxPassword = new System.Windows.Forms.TextBox();         this.textBoxUsername = new System.Windows.Forms.TextBox();         this.label4 = new System.Windows.Forms.Label();         this.label3 = new System.Windows.Forms.Label();         this.textBoxHostname = new System.Windows.Forms.TextBox();         this.label2 = new System.Windows.Forms.Label();         this.label1 = new System.Windows.Forms.Label();         this.textBoxResults = new System.Windows.Forms.TextBox();         this.splitContainer1.Panel1.SuspendLayout();         this.splitContainer1.Panel2.SuspendLayout();         this.splitContainer1.SuspendLayout();         this.groupBox1.SuspendLayout();         this.SuspendLayout();         //          // splitContainer1         //          this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;         this.splitContainer1.Location = new System.Drawing.Point(0, 0);         this.splitContainer1.Name = "splitContainer1";         //          // Panel1         //          this.splitContainer1.Panel1.Controls.Add(this.buttonSearch);         this.splitContainer1.Panel1.Controls.Add(this.label9);         this.splitContainer1.Panel1.Controls.Add(this.textBoxFilter);         this.splitContainer1.Panel1.Controls.Add(this.label8);         this.splitContainer1.Panel1.Controls.Add(this.label7);         this.splitContainer1.Panel1.Controls.Add(this.listBoxProperties);         this.splitContainer1.Panel1.Controls.Add(this.label6);         this.splitContainer1.Panel1.Controls.Add(this.buttonLoadProperties);         this.splitContainer1.Panel1.Controls.Add(this.label5);         this.splitContainer1.Panel1.Controls.Add(this.groupBox1);         this.splitContainer1.Panel1.Controls.Add(this.textBoxHostname);         this.splitContainer1.Panel1.Controls.Add(this.label2);         this.splitContainer1.Panel1.Controls.Add(this.label1);         //          // Panel2         //          this.splitContainer1.Panel2.Controls.Add(this.textBoxResults);         this.splitContainer1.Size = new System.Drawing.Size(721, 550);         this.splitContainer1.SplitterDistance = 370;         this.splitContainer1.TabIndex = 0;         this.splitContainer1.Text = "splitContainer1";         //          // buttonSearch         //          this.buttonSearch.Location = new System.Drawing.Point(190, 489);         this.buttonSearch.Name = "buttonSearch";         this.buttonSearch.TabIndex = 12;         this.buttonSearch.Text = "Search";         this.buttonSearch.Click += new System.EventHandler(this.OnSearch);         //          // label9         //          this.label9.AutoSize = true;         this.label9.Location = new System.Drawing.Point(22, 489);         this.label9.Name = "label9";         this.label9.Size = new System.Drawing.Size(98, 14);         this.label9.TabIndex = 11;         this.label9.Text = "5. Start the Search";         //          // textBoxFilter         //          this.textBoxFilter.Location = new System.Drawing.Point(190, 445);         this.textBoxFilter.Name = "textBoxFilter";         this.textBoxFilter.TabIndex = 10;         this.textBoxFilter.Text = "(objectClass=user)";         //          // label8         //          this.label8.AutoSize = true;         this.label8.Location = new System.Drawing.Point(22, 452);         this.label8.Name = "label8";         this.label8.Size = new System.Drawing.Size(33, 14);         this.label8.TabIndex = 9;         this.label8.Text = "Filter:";         //          // label7         //          this.label7.AutoSize = true;         this.label7.Location = new System.Drawing.Point(22, 420);         this.label7.Name = "label7";         this.label7.Size = new System.Drawing.Size(127, 14);         this.label7.TabIndex = 8;         this.label7.Text = "4. Enter the LDAP Filter:";         //          // listBoxProperties         //          this.listBoxProperties.FormattingEnabled = true;         this.listBoxProperties.Location = new System.Drawing.Point(190, 289);         this.listBoxProperties.Name = "listBoxProperties";         this.listBoxProperties.Size = new System.Drawing.Size(120, 95);         this.listBoxProperties.TabIndex = 7;         //          // label6         //          this.label6.AutoSize = true;         this.label6.Location = new System.Drawing.Point(22, 289);         this.label6.Name = "label6";         this.label6.Size = new System.Drawing.Size(129, 27);         this.label6.TabIndex = 6;         this.label6.Text = "3. Choose the Properties \r\nto Display";         //          // buttonLoadProperties         //          this.buttonLoadProperties.Location = new System.Drawing.Point(190, 238);         this.buttonLoadProperties.Name = "buttonLoadProperties";         this.buttonLoadProperties.Size = new System.Drawing.Size(116, 23);         this.buttonLoadProperties.TabIndex = 5;         this.buttonLoadProperties.Text = "Load Properties";         this.buttonLoadProperties.Click += new System.EventHandler(this.OnLoadProperties);         //          // label5         //          this.label5.AutoSize = true;         this.label5.Location = new System.Drawing.Point(29, 238);         this.label5.Name = "label5";         this.label5.Size = new System.Drawing.Size(118, 14);         this.label5.TabIndex = 4;         this.label5.Text = "2. Load the Properties:";         //          // groupBox1         //          this.groupBox1.Controls.Add(this.textBoxPassword);         this.groupBox1.Controls.Add(this.textBoxUsername);         this.groupBox1.Controls.Add(this.label4);         this.groupBox1.Controls.Add(this.label3);         this.groupBox1.Location = new System.Drawing.Point(22, 115);         this.groupBox1.Name = "groupBox1";         this.groupBox1.Size = new System.Drawing.Size(304, 100);         this.groupBox1.TabIndex = 3;         this.groupBox1.TabStop = false;         this.groupBox1.Text = "Logon [optional]";         //          // textBoxPassword         //          this.textBoxPassword.Location = new System.Drawing.Point(168, 60);         this.textBoxPassword.Name = "textBoxPassword";         this.textBoxPassword.PasswordChar = '*';         this.textBoxPassword.Size = new System.Drawing.Size(116, 20);         this.textBoxPassword.TabIndex = 3;         //          // textBoxUsername         //          this.textBoxUsername.Location = new System.Drawing.Point(168, 23);         this.textBoxUsername.Name = "textBoxUsername";         this.textBoxUsername.Size = new System.Drawing.Size(116, 20);         this.textBoxUsername.TabIndex = 2;         //          // label4         //          this.label4.AutoSize = true;         this.label4.Location = new System.Drawing.Point(7, 60);         this.label4.Name = "label4";         this.label4.Size = new System.Drawing.Size(57, 14);         this.label4.TabIndex = 1;         this.label4.Text = "Password:";         //          // label3         //          this.label3.AutoSize = true;         this.label3.Location = new System.Drawing.Point(7, 29);         this.label3.Name = "label3";         this.label3.Size = new System.Drawing.Size(60, 14);         this.label3.TabIndex = 0;         this.label3.Text = "Username:";         //          // textBoxHostname         //          this.textBoxHostname.Location = new System.Drawing.Point(190, 70);         this.textBoxHostname.Name = "textBoxHostname";         this.textBoxHostname.Size = new System.Drawing.Size(136, 20);         this.textBoxHostname.TabIndex = 2;         //          // label2         //          this.label2.AutoSize = true;         this.label2.Location = new System.Drawing.Point(22, 70);         this.label2.Name = "label2";         this.label2.Size = new System.Drawing.Size(145, 14);         this.label2.TabIndex = 1;         this.label2.Text = "Domain Controller [optional]";         //          this.label1.AutoSize = true;         this.label1.Location = new System.Drawing.Point(22, 31);         this.label1.Name = "label1";         this.label1.Size = new System.Drawing.Size(254, 14);         this.label1.TabIndex = 0;         this.label1.Text = "1. Enter Domain Controller and Logon Information";         //          // textBoxResults         //          this.textBoxResults.Dock = System.Windows.Forms.DockStyle.Fill;         this.textBoxResults.Location = new System.Drawing.Point(0, 0);         this.textBoxResults.Multiline = true;         this.textBoxResults.Name = "textBoxResults";         this.textBoxResults.Size = new System.Drawing.Size(347, 550);         this.textBoxResults.TabIndex = 0;         //          // UserSearchForm         //          this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);         this.ClientSize = new System.Drawing.Size(721, 550);         this.Controls.Add(this.splitContainer1);         this.Name = "UserSearchForm";         this.Text = "User Search";         this.splitContainer1.Panel1.ResumeLayout(false);         this.splitContainer1.Panel1.PerformLayout();         this.splitContainer1.Panel2.ResumeLayout(false);         this.splitContainer1.Panel2.PerformLayout();         this.splitContainer1.ResumeLayout(false);         this.groupBox1.ResumeLayout(false);         this.groupBox1.PerformLayout();         this.ResumeLayout(false);     }     private System.Windows.Forms.SplitContainer splitContainer1;     private System.Windows.Forms.TextBox textBoxHostname;     private System.Windows.Forms.Label label2;     private System.Windows.Forms.Label label1;     private System.Windows.Forms.GroupBox groupBox1;     private System.Windows.Forms.TextBox textBoxUsername;     private System.Windows.Forms.Label label4;     private System.Windows.Forms.Label label3;     private System.Windows.Forms.TextBox textBoxPassword;     private System.Windows.Forms.Button buttonLoadProperties;     private System.Windows.Forms.Label label5;     private System.Windows.Forms.Label label6;     private System.Windows.Forms.ListBox listBoxProperties;     private System.Windows.Forms.TextBox textBoxFilter;     private System.Windows.Forms.Label label8;     private System.Windows.Forms.Label label7;     private System.Windows.Forms.Button buttonSearch;     private System.Windows.Forms.Label label9;     private System.Windows.Forms.TextBox textBoxResults;     [STAThread]     static void Main() {         Application.EnableVisualStyles();         Application.Run(new UserSearchForm());     } }