Test.cs
上传用户:lxycoco
上传日期:2022-07-21
资源大小:38457k
文件大小:5k
源码类别:

C#编程

开发平台:

Others

  1. using System;
  2. using System.DirectoryServices;
  3. namespace Wrox.ProCSharp.ActiveDirectory
  4. {
  5. /// <summary>
  6. /// Summary description for Class1.
  7. /// </summary>
  8. class Test
  9. {
  10. public static void RootDSE()
  11. {
  12. using (DirectoryEntry de = new DirectoryEntry())
  13. {
  14. de.Path = "LDAP://platinum/rootDSE";
  15. de.Username = @"athenaprojectchris";
  16. de.Password = "password";
  17. PropertyCollection props = de.Properties;
  18. foreach (string prop in props.PropertyNames)
  19. {
  20. PropertyValueCollection values = props[prop];
  21. foreach (string val in values)
  22. {
  23. Console.Write(prop + ": ");
  24. Console.WriteLine(val);
  25. }
  26. }
  27. }
  28. }
  29. public static void ShowUserObject()
  30. {
  31. using (DirectoryEntry de = new DirectoryEntry())
  32. {
  33. de.Path = "LDAP://platinum/CN=Christian Nagel, OU=Wrox Press, " + 
  34. "DC=athenaproject, DC=local";
  35. de.Username = @"athenaprojectchris";
  36. de.Password = "password";
  37. Console.WriteLine("Name: " + de.Name);
  38. Console.WriteLine("GUID: " + de.Guid);
  39. Console.WriteLine("Type: " + de.SchemaClassName);
  40. Console.WriteLine();
  41. Console.WriteLine("Properties: ");
  42. PropertyCollection properties = de.Properties;
  43. foreach (string name in properties.PropertyNames)
  44. {
  45. foreach (object o in properties[name])
  46. {
  47. Console.WriteLine(name + ": " + o);
  48. }
  49. }
  50. }
  51. }
  52. public static void ShowChildren()
  53. {
  54. using (DirectoryEntry de = new DirectoryEntry())
  55. {
  56. de.Path = "LDAP://platinum/OU=Wrox Press, " + 
  57. "DC=athenaproject, DC=local";
  58. de.Username = @"athenaprojectchris";
  59. de.Password = "password";
  60.       
  61. // enumerate children
  62. Console.WriteLine("Children of " + de.Name);
  63. de.Children.SchemaFilter.Add("user");
  64. foreach (DirectoryEntry obj in de.Children)
  65. {
  66. Console.WriteLine(obj.Name);
  67. }
  68. }
  69. }
  70. static void AddUser()
  71. {
  72. using (DirectoryEntry de = new DirectoryEntry())
  73. {            
  74. de.Path = "LDAP://celticrain/OU=Wrox Press, DC=eichkogelstrasse, DC=local";
  75. // de.Path = "LDAP://celticrain/CN=Users, DC=eichkogelstrasse, DC=local";
  76. DirectoryEntries users = de.Children;
  77. DirectoryEntry user = users.Add("CN=John Doe", "user");
  78. user.Properties["company"].Add("Some Company");
  79. user.Properties["department"].Add("Sales");
  80. user.Properties["employeeID"].Add("4711");
  81. user.Properties["samAccountName"].Add("JDoe");
  82. user.Properties["userPrincipalName"].Add("JDoe@eichkogelstrasse.local");
  83. user.Properties["sn"].Add("Doe");
  84. user.Properties["givenName"].Add("John");
  85. user.Properties["userPassword"].Add("someSecret");
  86. user.CommitChanges();
  87. }
  88. }
  89. public static void UpdateUser()
  90. {
  91. using (DirectoryEntry de = new DirectoryEntry())
  92. {
  93. de.Path = "LDAP://celticrain/CN=Christian Nagel, OU=Wrox Press, " + 
  94. "DC=eichkogelstrasse, DC=local";
  95. if (de.Properties.Contains("mobile"))
  96. {
  97. de.Properties["mobile"][0] = "+43(664)3111111111";
  98. }
  99. else
  100. {
  101. de.Properties["mobile"].Add("+43(664)3111111111");
  102. de.CommitChanges(); 
  103. }
  104. }
  105. static void EnableUser()
  106. {
  107. using (DirectoryEntry de = new DirectoryEntry())
  108. {
  109. de.Path = "LDAP://celticrain/CN=John Doe, CN=Users, DC=eichkogelstrasse, DC=local";
  110. de.Invoke("SetPassword", "anotherSecret");
  111. de.CommitChanges();
  112. ActiveDs.IADsUser user = (ActiveDs.IADsUser)de.NativeObject;
  113. user.SetPassword("someSecret");
  114. user.AccountDisabled = false;
  115. de.CommitChanges();
  116. }
  117. }
  118.   
  119. static void SearchUser()
  120. {
  121. using (DirectoryEntry de = new DirectoryEntry("LDAP://OU=Wrox PRess, " +
  122.    "DC=eichkogelstrasse, DC=local"))
  123. using (DirectorySearcher searcher = new DirectorySearcher())
  124. {
  125. searcher.SearchRoot = de;
  126. searcher.Filter = "(&(objectClass=user)(description=Auth*))";
  127. searcher.SearchScope = SearchScope.Subtree;
  128. searcher.PropertiesToLoad.Add("name");
  129. searcher.PropertiesToLoad.Add("description");
  130. searcher.PropertiesToLoad.Add("givenName");
  131. searcher.PropertiesToLoad.Add("wWWHomePage");
  132.             
  133. searcher.Sort = new SortOption("givenName", SortDirection.Ascending);
  134. SearchResultCollection results = searcher.FindAll();
  135. foreach (SearchResult result in results)
  136. {
  137. ResultPropertyCollection props = result.Properties;
  138. foreach (string propName in props.PropertyNames)
  139. {
  140. Console.Write(propName + ": ");
  141. Console.WriteLine(props[propName][0]); 
  142. }
  143. Console.WriteLine();
  144. }
  145. }
  146. }
  147. [STAThread]
  148. static void Main(string[] args)
  149. {
  150. // Example 1 - Distinguished Name
  151.   // RootDSE();
  152. // Example 2 - Properties of User Objects
  153. // ShowUserObject();
  154. // Example 3 - Object Collection
  155. // ShowChildren();
  156. // Example 4 - Create new objects
  157. // AddUser();
  158. // Example 5 - Updating Directory Entries
  159. // UpdateUser();
  160. // Example 6 - Accessing Native ADSI Objects
  161. // EnableUser();
  162.    
  163. // Example 7 - Searching
  164. SearchUser();
  165. }
  166. }
  167. }