承接前文,我們已完成網域/工作群組的第一層樹狀結構。現在要在使用者雙擊某個網域節點時,即時查詢並展示該網域下的所有電腦主機。
private void treeView1_DoubleClick(object sender, EventArgs e)
{
if (treeView1.SelectedNode != null)
{
string domainName = treeView1.SelectedNode.Text;
treeView1.SelectedNode.Nodes.Clear(); // 清空舊子節點
DirectoryEntry domainEntry = new DirectoryEntry("WinNT://" + domainName);
TreeNode parentNode = treeView1.SelectedNode;
foreach (DirectoryEntry child in domainEntry.Children)
{
// 只保留 SchemaClassName 為 "Computer" 的節點
if (string.Equals(child.SchemaClassName, "Computer", StringComparison.OrdinalIgnoreCase))
{
TreeNode computerNode = new TreeNode(child.Name);
parentNode.Nodes.Add(computerNode);
}
}
treeView1.SelectedNode.Expand(); // 自動展開
}
}
按 F5 執行專案,點擊「讀取」按鈕載入網域清單,再雙擊任一網域節點,即可看到該網域下的電腦主機列表:

圖 02:Visual C# 構建網路電腦樹狀圖 - 執行介面
本系列展示了如何透過 System.DirectoryServices 命名空間下的 DirectoryEntry 類別,靈活運用 ADSI(Active Directory 服務介面)快速構建網路拓撲樹。然而有幾點須注意:
儘管有限制,這個範例仍是學習 ADSI 程式設計、理解網路資源枚舉的絕佳切入點。