ADSI (Active Directory Service Interfaces) 為 Windows 網路資源的統一存取介面,以階層樹狀結構呈現網域、工作群組、電腦、印表機等資源。.NET 提供 System.DirectoryServices 命名空間,核心類別:
DirectoryEntry:代表樹狀結構中的節點,可繫結至特定路徑(如 WinNT://、LDAP://)DirectorySearcher:執行查詢搜尋| 提供者 | 路徑前綴 |
|---|---|
| Windows NT (網域/工作群組) | WinNT:// |
| LDAP (Active Directory) | LDAP:// |
| Novell NDS | NDS:// |
| Novell NetWare 3.x | NWCOMPAT:// |
本文使用 WinNT:// 列舉網域/工作群組及其下的電腦。
TreeView (Name: treeView1) - 顯示樹狀結構Button (Text: "獲取", Click 事件) - 觸發載入
using System.DirectoryServices;
private DirectoryEntry rootEntry = new DirectoryEntry("WinNT:");
private void btnLoad_Click(object sender, EventArgs e)
{
treeView1.Nodes.Clear();
foreach (DirectoryEntry child in rootEntry.Children)
{
TreeNode node = new TreeNode(child.Name);
treeView1.Nodes.Add(node);
}
}
private void treeView1_DoubleClick(object sender, EventArgs e)
{
if (treeView1.SelectedNode == null) return;
string domainName = treeView1.SelectedNode.Text;
treeView1.SelectedNode.Nodes.Clear();
// 繫結至該網域路徑
var domainEntry = new DirectoryEntry($"WinNT://{domainName}");
foreach (DirectoryEntry child in domainEntry.Children)
{
// SchemaClassName 為 "Computer" 者才是電腦
if (string.Equals(child.SchemaClassName, "Computer", StringComparison.OrdinalIgnoreCase))
{
TreeNode pcNode = new TreeNode(child.Name);
treeView1.SelectedNode.Nodes.Add(pcNode);
}
}
treeView1.SelectedNode.Expand();
}
點擊「獲取」顯示網域/工作群組 → 雙擊節點展開顯示該網域下所有電腦。

LDAP://)DirectoryEntry.Children 列舉與 SchemaClassName 過濾可進一步整合 DirectorySearcher 進行條件查詢(如依作業系統、最後登入時間過濾),或結合 WMI 查詢更詳細硬體資訊。