Introduction
A basic Windows control library for selecting objects in your Active Directory.
Background
I've been involved in several Active Directory projects and frequently have had the need for a "picker" utility to select objects in the AD hierarchy. I decided to roll my own and encapsulate it in a Windows control library.
Sample Usage
Add the control to the list of Windows Forms controls in Visual Studio .NET, then drag the control onto a Windows Form. The control will automatically obtain your Active Directory root path and begin building a hierachal tree of the objects it finds.
private void AddTreeNodes(TreeNode node)
{
Cursor.Current = Cursors.WaitCursor;
treeView1.BeginUpdate();
adh = new ADHelper();
adh.GetChildEntries((string)node.Tag);
IDictionaryEnumerator enumerator = adh.Children.GetEnumerator();
while (enumerator.MoveNext())
{
TreeNode childNode = new TreeNode((string)enumerator.Key);
childNode.Tag = enumerator.Value;
node.Nodes.Add(childNode);
if (!alExceptions.Contains(node.Text))
childNode.ImageIndex =
SetImageIndex(enumerator.Key.ToString().Substring(0,2));
else
childNode.ImageIndex = 3;
}
treeView1.EndUpdate();
Cursor.Current = Cursors.Default;
}
AddTreeNodes()
takes only one parameter, the parent TreeNode
object. It then proceeds to add every child object it finds. Similar to Microsoft's ADSI Edit tool, the control displays a plus sign to indicate if a node has one or more child nodes.
Returning the ADsPath
Each time a node is selected in the hierarchy, the ADsPath
public property is updated to reflect the fully-qualified path to the object (i.e. LDAP://OU=DEV,OU=US,DC=CORPORATE,DC=MYDOMAIN,DC=COM).
public void GetChildEntries(string adspath)
{
if (adspath.Length > 0)
entry = new DirectoryEntry(adspath);
else
entry = new DirectoryEntry();
foreach (DirectoryEntry childEntry in entry.Children)
{
_htChildren.Add(childEntry.Name, childEntry.Path);
}
}
private void treeView1_AfterSelect(object sender,
System.Windows.Forms.TreeViewEventArgs e)
{
_adspath = (string)e.Node.Tag;
}
Compatibility
The control has been tested on Windows 2000/XP/2003. It should work for Windows 9x/NT with the Microsoft Active Directory Client Extensions installed.
History
- Version 1.0 - 04.22.2004 - First release version.
- Version 1.1 - 04.28.2004 - Added image support for object types.