⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.cs

📁 Professional C# 2nd Edition
💻 CS
字号:
using System;
using System.DirectoryServices;

namespace Wrox.ProCSharp.ActiveDirectory
{
	/// <summary>
	/// Summary description for Class1.
	/// </summary>
	class Test
	{
		public static void RootDSE()
		{
			using (DirectoryEntry de = new DirectoryEntry())
			{												
				de.Path = "LDAP://celticrain/rootDSE";
				de.Username = @"sentinel\chris";
				de.Password = "someSecret";

				PropertyCollection props = de.Properties;

				foreach (string prop in props.PropertyNames)
				{
					PropertyValueCollection values = props[prop];
					foreach (string val in values)
					{
						Console.Write(prop + ": ");
						Console.WriteLine(val);
					}
				}
			}
		}

		public static void ShowUserObject()
		{
			using (DirectoryEntry de = new DirectoryEntry())
			{
				de.Path = "LDAP://celticrain/CN=Christian Nagel, OU=Wrox Press, " + 
					"DC=eichkogelstrasse, DC=local";

				Console.WriteLine("Name: " + de.Name);
				Console.WriteLine("GUID: " + de.Guid);
				Console.WriteLine("Type: " + de.SchemaClassName);
				Console.WriteLine();

				Console.WriteLine("Properties: ");
				PropertyCollection properties = de.Properties;
				foreach (string name in properties.PropertyNames)
				{
					foreach (object o in properties[name])
					{
						Console.WriteLine(name + ": " + o);
					}
				}
			}
		}

		public static void ShowChildren()
		{
			using (DirectoryEntry de = new DirectoryEntry())
			{
				de.Path = "LDAP://celticrain/OU=Wrox Press, " + 
					"DC=eichkogelstrasse, DC=local";
				de.Username = @"sentinel\Administrator";
				de.Password = "someSecret";
      
				// enumerate children
				Console.WriteLine("Children of " + de.Name);
				de.Children.SchemaFilter.Add("user");
				foreach (DirectoryEntry obj in de.Children)
				{
					Console.WriteLine(obj.Name);
				}
			}
		}

		static void AddUser()
		{
			using (DirectoryEntry de = new DirectoryEntry())
			{            
				de.Path = "LDAP://celticrain/OU=Wrox Press, DC=eichkogelstrasse, DC=local";
				// de.Path = "LDAP://celticrain/CN=Users, DC=eichkogelstrasse, DC=local";

				DirectoryEntries users = de.Children;

				DirectoryEntry user = users.Add("CN=John Doe", "user");
				user.Properties["company"].Add("Some Company");
				user.Properties["department"].Add("Sales");
				user.Properties["employeeID"].Add("4711");
				user.Properties["samAccountName"].Add("JDoe");
				user.Properties["userPrincipalName"].Add("JDoe@eichkogelstrasse.local");
				user.Properties["sn"].Add("Doe");
				user.Properties["givenName"].Add("John");
				user.Properties["userPassword"].Add("someSecret");
				user.CommitChanges();
			}
		}

		public static void UpdateUser()
		{
			using (DirectoryEntry de = new DirectoryEntry())
			{
				de.Path = "LDAP://celticrain/CN=Christian Nagel, OU=Wrox Press, " + 
					"DC=eichkogelstrasse, DC=local";
				
				if (de.Properties.Contains("mobile"))
				{
					de.Properties["mobile"][0] = "+43(664)3111111111";
				}
				else
				{
					de.Properties["mobile"].Add("+43(664)3111111111");
				} 
				de.CommitChanges(); 
			}
		}

		static void EnableUser()
		{
			using (DirectoryEntry de = new DirectoryEntry())
			{
				de.Path = "LDAP://celticrain/CN=John Doe, CN=Users, DC=eichkogelstrasse, DC=local";

				de.Invoke("SetPassword", "anotherSecret");

				de.CommitChanges();

				ActiveDs.IADsUser user = (ActiveDs.IADsUser)de.NativeObject;
				user.SetPassword("someSecret");
				user.AccountDisabled = false;

				de.CommitChanges();
			}
		}
	  

		static void SearchUser()
		{
			using (DirectoryEntry de = new DirectoryEntry("LDAP://OU=Wrox PRess, " +
					   "DC=eichkogelstrasse, DC=local"))
			using (DirectorySearcher searcher = new DirectorySearcher())
			{
				searcher.SearchRoot = de;
				searcher.Filter = "(&(objectClass=user)(description=Auth*))";
				searcher.SearchScope = SearchScope.Subtree;

				searcher.PropertiesToLoad.Add("name");
				searcher.PropertiesToLoad.Add("description");
				searcher.PropertiesToLoad.Add("givenName");
				searcher.PropertiesToLoad.Add("wWWHomePage");
            
				searcher.Sort = new SortOption("givenName", SortDirection.Ascending);

				SearchResultCollection results = searcher.FindAll();

				foreach (SearchResult result in results)
				{
					ResultPropertyCollection props = result.Properties;
					foreach (string propName in props.PropertyNames)
					{
						Console.Write(propName + ": ");
						Console.WriteLine(props[propName][0]); 
					}
					Console.WriteLine();
				}
			}
		}

		[STAThread]
		static void Main(string[] args)
		{
			// Example 1 - Distinguished Name
 			// RootDSE();

			// Example 2 - Properties of User Objects
			// ShowUserObject();

			// Example 3 - Object Collection
			// ShowChildren();

			// Example 4 - Create new objects
			// AddUser();

			// Example 5 - Updating Directory Entries
			// UpdateUser();

			// Example 6 - Accessing Native ADSI Objects
			// EnableUser();
   
			// Example 7 - Searching
			SearchUser();
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -