Active Directory Service Interfaces (ADSI) 提供統一的 COM 介面存取多種目錄服務:WinNT (SAM)、LDAP、NDS (NetWare)、NWCOMPAT (NetWare 3.x)。Delphi 作為支援 COM 的開發工具,可透過匯入 Active DS Type Library (ActiveDs.tlb) 直接呼叫 ADSI 介式,實現網域使用者、群組、電腦、服務等資源的程式化管理。
專案 → 匯入類型庫 → 選擇 Active DS Type Library 1.0 → 產生 ActiveDs_TLB.pas 封裝單元,包含 IADsContainer、IADsUser、IADsGroup、IADsServiceOperations 等關鍵介面定義。
// 使用目前登入身分 (ADsGetObject)
OleCheck(ADsGetObject(PWideChar('WinNT://' + DomainName),
IID_IADsContainer, UnknownObject));
// 指定認證身分 (ADsOpenObject)
OleCheck(ADsOpenObject(PWideChar('WinNT://' + DomainName),
PWideChar(UserName), PWideChar(Password), 0,
IID_IADsContainer, UnknownObject));
Enum := (Domain._NewEnum) as IEnumVariant;
while Enum.Next(1, ADsTempObj, Value) = S_OK do begin
ADsObj := IUnknown(ADsTempObj) as IADs;
case ADsObj.Class_ of
'User': AddUserToList(ADsObj);
'Group': AddGroupToList(ADsObj);
'Computer': AddComputerToList(ADsObj);
end;
end;
// 建立使用者
ComputerObj := GetComputerContainer(PDCName);
TempUserObj := ComputerObj.Create('user', NewUserName);
UserObj := TempUserObj as IADsUser;
UserObj.SetInfo; // 送交變更
// 刪除使用者
ComputerObj.Delete('user', UserName);
GroupObj := GetGroupObject(DomainName, GroupName);
Members := GroupObj.Members;
Enum := (Members._NewEnum) as IEnumVariant;
while Enum.Next(1, TempUserObj, Value) = S_OK do begin
UserObj := IUnknown(TempUserObj) as IADsUser;
// 列出成員屬性
end;
// 新增成員
GroupObj.Add(UserObj.ADsPath);
// 移除成員
GroupObj.Remove(UserObj.ADsPath);
// 取得服務操作介面
ServiceObj := GetServiceObject(ComputerName, ServiceName) as IADsServiceOperations;
// 啟動服務
if ServiceObj.Get_Status = 1 then // 1 = 停止狀態
ServiceObj.Start;
// 停止服務
if ServiceObj.Get_Status = 2 then // 2 = 執行狀態
ServiceObj.Stop;
try..except 區塊,捕捉 EOleException 解析 HRESULT 錯誤碼QueryInterface / as 運算子在不同介面間轉換LDAP://) 搭配 SSL/TLS 加密傳輸掌握 ADSI 基礎後,可進一步開發:自動化帳號佈建/離職流程、群組原則報表產生器、權限稽核工具、跨平台目錄同步方案等企業級身分管理應用。
Windows 2000 20 大超實用操作技巧:開機加速、快捷鍵、拖放技巧與自動化設定
Windows 2000 Server 內建安全指令實戰:net start/accounts/stat 守護伺服器防線
Windows 2000/XP 常見系統進程完整對照表與異常判讀指南
Windows Server 2003 安裝 Macintosh 與 UNIX 列印服務步驟說明
Windows Server 2003 雙重自動登入設定法:圖形介面與登錄編輯完整教學
Windows Server 2003 遭入侵後的完整修復與防護實戰紀錄
Windows Server 2003 Active Directory 應用篇:DNS 整合、SRV 記錄、動態更新與 WINS 淘汰