Csharp/CSharp Tutorial/Directory Services/Read

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Get DirectoryEntry Path

<source lang="csharp">using System; using System.DirectoryServices; class MainClass {

  public static void Main()
  {
     DirectoryEntry de2 = new DirectoryEntry("LDAP://192.168.1.100/ou=auditing, dc=accounting, dc=ispnet1, dc=net");
     string newpath = de2.Path;
     Console.WriteLine("new path: {0}", newpath);
     de2.Close();
  }

}</source>

new path: LDAP://192.168.1.100/ou=auditing, dc=accounting, dc=ispnet1, dc=net

Get MultiValued Attribute

<source lang="csharp">using System; using System.Runtime.InteropServices; using System.DirectoryServices; using ActiveDs; public unsafe class MainClass {

 public static int Main(string[] args)
 {
   string Path = "LDAP://dsaddom.nttest.microsoft.ru/rootDSE";
   IADs pIADs = null;
   
   DirectoryEntry Entry = new DirectoryEntry(Path);
   pIADs = (IADs)Entry.NativeObject;
   Array NamingContexts = (Array)pIADs.Get("namingContexts");
   for(int i = 0; i < NamingContexts.GetLength(0); i++)
   {
     Console.WriteLine((string)NamingContexts.GetValue(i));
   }
   
   Array Contexts = (Array)pIADs.GetEx("namingContexts");
   for(int i = 0; i < NamingContexts.GetLength(0); i++)
   {
     Console.WriteLine((string)Contexts.GetValue(i));
   }
   return 0;
 }

}</source>

Get Properties

<source lang="csharp">using System; using System.DirectoryServices; class MainClass {

  public static void Main()
  {
     DirectoryEntry de = new DirectoryEntry(
        "LDAP://192.168.1.100/cn=kblum, ou=sales, dc=ispnet1, dc=net");
     Console.WriteLine("object: {0}", de.Path);
     PropertyCollection pc = de.Properties;
     foreach(string propName in pc.PropertyNames)
     {
        foreach(object value in de.Properties[propName])
           Console.WriteLine("  property = {0}   value = {1}",
              propName, value);
     }
  }

}</source>

object: LDAP://192.168.1.100/cn=kblum, ou=sales, dc=ispnet1, dc=net
^CTerminate batch job (Y/N)? n

Get Property Collection

<source lang="csharp">using System; using System.DirectoryServices; public class MainClass {

 public static int Main(string[] args)
 {
   DirectoryEntry MyDirectoryObject = new DirectoryEntry();
   //Port 389 is LDAP Port
   MyDirectoryObject.Path = "LDAP://HMSRevenge:389/OU=Users,DC=Test,DC=COM";
   MyDirectoryObject.Username = @"Test\AAA";
   MyDirectoryObject.Password = @"MyPassword";
   PropertyCollection MyAttributes = MyDirectoryObject.Properties;
   foreach(string MyAttributeName in MyAttributes.PropertyNames)
   {
     PropertyValueCollection MyAttributeValues = MyAttributes[MyAttributeName];
     foreach(string MyValue in MyAttributeValues)
     {
       Console.WriteLine(MyAttributeName + " = " + MyValue);
     }
   }
   return 0;
 }

}</source>

Get Property Collection using PropertyCache

<source lang="csharp">using System; using System.DirectoryServices; public class MainClass {

 public static int Main(string[] args)
 {
   DirectoryEntry MyDirectoryObject = new DirectoryEntry();
   
   MyDirectoryObject.Path = "LDAP://HMSRevenge/rootDSE";
   MyDirectoryObject.Username = @"AAA\BBB";
   MyDirectoryObject.Password = @"MyPassword";
   MyDirectoryObject.UsePropertyCache = false;
   DirectoryEntries MyChildObjects = MyDirectoryObject.Children;
       
   PropertyCollection MyAttributes = MyDirectoryObject.Properties;
   foreach(string MyAttributeName in MyAttributes.PropertyNames)
   {
     PropertyValueCollection MyAttributeValues = MyAttributes[MyAttributeName];
     foreach(string MyValue in MyAttributeValues)
     {
       Console.WriteLine(MyAttributeName + " = " + MyValue);
     }
   }
   return 0;
 }

}</source>

Get Single Attribute

<source lang="csharp">using System; using System.Runtime.InteropServices; using System.DirectoryServices; using ActiveDs; public unsafe class MainClass {

 public static int Main(string[] args)
 {
   string Path = "LDAP://dsaddom.nttest.microsoft.ru/rootDSE";
   IADs pIADs = null;
   
   DirectoryEntry Entry = new DirectoryEntry(Path);
   pIADs = (IADs)Entry.NativeObject;
   string DefaultNamingContext = (string)pIADs.Get("defaultNamingContext");
   Console.WriteLine(DefaultNamingContext);
   
   Array NamingContext = (Array)pIADs.GetEx("defaultNamingContext");
   for(int i = 0; i < NamingContext.GetLength(0); i++)
   {
     Console.WriteLine((string)NamingContext.GetValue(i));
   }
   return 0;
 }

}</source>

List Objects

<source lang="csharp">using System; using System.Collections; using System.DirectoryServices; class MainClass {

  public static void Main()
  {
     DirectoryEntry de = new DirectoryEntry(
       "LDAP://192.168.1.100/dc=ispnet1, dc=net");
     Console.WriteLine(de.Path);
     DirectoryEntries des = de.Children;
     foreach(DirectoryEntry entry in des)
     {
        Console.WriteLine("  child: " + entry.Name);
     }
  }

}</source>

LDAP://192.168.1.100/dc=ispnet1, dc=net
^CTerminate batch job (Y/N)? n

Reading Known Directory Objects

<source lang="csharp">using System; using System.DirectoryServices; public class MainClass {

 public static int Main(string[] args)
 {
   DirectoryEntry MyObject = new DirectoryEntry();
   MyObject.Path = "LDAP://HMSRevenge/OU=Users,DC=Test,DC=com";
   foreach(string MyValue in MyObject.Properties["email"])
     Console.WriteLine("Email" + " : " + MyValue);
   return 0;
 }

}</source>

Retrieves Active Directory information

<source lang="csharp">using System; using System.DirectoryServices; class MainClass {

 public static void Main() 
 {
   DirectoryEntry de = new DirectoryEntry("WinNT://DomanName/MachineName", "Administrator", "Password");
   foreach(DirectoryEntry child in de.Children) 
   {
     Console.WriteLine(child.SchemaClassName + ": " + child.Name);
   }
 }

}</source>