首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Visual C# 打造網路電腦樹狀圖(完結篇):雙擊展開查詢主機清單

     編輯:關於C語言

實作 TreeView 雙擊事件:動態載入網域下的電腦節點

承接前文,我們已完成網域/工作群組的第一層樹狀結構。現在要在使用者雙擊某個網域節點時,即時查詢並展示該網域下的所有電腦主機。

核心程式碼:treeView1_DoubleClick 事件處理

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 服務介面)快速構建網路拓撲樹。然而有幾點須注意:

  • Windows 98/Me 等舊版作業系統 未預裝 ADSI 2.5,無法被查詢顯示。
  • 僅能掃描執行程式主機所在的單一網段;若環境包含多個 VLAN 或跨網段,無法完整呈現全域拓撲。
  • 效能取決於網路延遲與 AD 回應速度,大型網域建議加入非同步載入與進度提示。

儘管有限制,這個範例仍是學習 ADSI 程式設計、理解網路資源枚舉的絕佳切入點。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved