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

Visual C# 打造網路電腦樹狀圖(一):從 ADSI 與 System.DirectoryServices 談起

     編輯:關於C語言

為什麼選擇 System.DirectoryServices?

撰寫網路應用程式時,開發者習慣想到 System.Net 與 System.Net.Sockets。但 .NET Framework 其實還提供了 System.DirectoryServices 命名空間,內含 DirectoryEntry 與 DirectorySearcher 兩大核心類別,能直接操作 ADSI (Active Directory 服務介面),以分層樹狀結構存取網路資源(域、工作群組、電腦、印表機等),極大簡化了原本需呼叫 Win32 API 的複雜度。

ADSI 核心概念

  • ADSI 是 Microsoft Windows Active Directory 的程式設計介面,提供單一介面與異構目錄服務互動。
  • 目錄資料以「節點」呈現,每個節點代表一項網路資源(如域、工作群組),並包含可擷取屬性(如電腦名稱、IP、作業系統版本)。
  • 本專案即利用此特性,建構「網域/工作群組 → 電腦主機」的兩層樹狀圖。

客戶端前置需求:ADSI 2.5 以上

關鍵限制:用戶端電腦必須安裝 ADSI 2.5 或更新版本。Windows 2000 內建;Windows 98/Me 須手動安裝,否則無法被查詢顯示。這也是為何舊版作業系統電腦不會出現在樹狀圖中的原因。

DirectoryEntry 常用屬性與方法速查表

表 01:常用屬性

屬性說明
AuthenticationType取得/設定驗證類型
Children取得子節點集合 (DirectoryEntries)
Name取得目錄服務命名的物件名稱
NativeObject取得底層 ADSI COM 物件
Parent取得父節點
Path取得/設定此 DirectoryEntry 路徑
Properties取得屬性集合 (PropertyCollection)
SchemaClassName取得結構描述類別名稱 (如 "Computer")
Username / Password驗證用帳號/密碼

表 02:常用方法

方法說明
Close()關閉並釋放資源
CommitChanges()儲存對 Active Directory 的變更
CopyTo()複製節點至指定父容器
DeleteTree()刪除節點及其整個子樹
Exists(path)檢查指定路徑節點是否存在
Invoke()在原生 ADSI 物件上呼叫方法
MoveTo()移動節點至新父容器
RefreshCache()重新載入屬性快取
Rename()重新命名節點

掌握上述基礎,下一篇將進入專案建立與介面設計的實際操作。

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