日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Delphi深度探索-活動目錄開發(fā)( 四 )


Exit;
// 指定域名路徑
ComputerPath := "WinNT://"ADSIDomainName.Text"/"Item.Caption;
// 創(chuàng)建計算機對象
OleCheck(ADsGetObject(PWideChar(ComputerPath),
IID_IADsComputer, UnknownObject));
// 獲得計算機容器接口
Computer := UnknownObject as IADsContainer;
// 清空服務(wù)視圖列表
ServiceListView.Items.Clear;
// 獲取枚舉對象用于遍歷
Enum := (Computer._NewEnum) as IEnumVariant;
// 用枚舉對象進行查找
while (Enum.Next(1, ADsTempObj, Value) = S_OK) do begin
// 保存臨時對象
ADsObj := IUnknown(ADsTempObj) as IADs;
// 如果對象為服務(wù)的話,添加到視圖中
if AdsObj.Class_ = "Service" then
AddServiceToList(ADsObj);
end;
end.
要想獲得 NT 服務(wù)的信息,需要綁定服務(wù)對應的 ADSI 對象,ADSI 提供了 IADsService 對象來維護 NT 服務(wù)的信息,下面代碼演示了如何綁定 NT 服務(wù),并顯示服務(wù)名:
var
ServiceObj: IADsService;
AdsPath: WideString;
begin
// 指定域名路徑
AdsPath := "WinNT://"ComputerName"/"ServiceName;
// 獲得服務(wù)對象
OLECheck(ADsGetObject(PWideChar(AdsPath),
IID_IADsService, ServiceObj));
// 獲得服務(wù)名
lblServiceName.Caption := " 服務(wù)名 : "ServiceName;
lblDisplayName.Caption := " 服務(wù)顯示名稱 : "
ServiceObj.Get_DisplayName;
要想啟動或停止 NT 服務(wù),可以使用 IADsServiceOperations ADSI 對象 。同上面一樣需要先綁定到 NT 服務(wù)上去,而同前面不一樣的是,這回不是獲得 IADsService ADSI 對象,而是獲得 IADsServiceOperations ADSI 對象:
// 創(chuàng)建計算機對象
OleCheck(AdsGetObject(PWideChar(AdsPath),
IID_IADsServiceOperations, Result));
然后使用 GetServiceObj 函數(shù)來綁定到 IADsServiceOperations ADSI 對象上,并返回 IADsServiceOperations 接口 :
// 獲得服務(wù)對象
ServiceObj := GetServiceObj;
啟動服務(wù)需要調(diào)用 IADsServiceOperations 接口的 Start 方法:
圖 1.114
// 啟動服務(wù),Get_Status = 1 表明服務(wù)正處于停止狀態(tài)
if ServiceObj.Get_Status = 1 then
ServiceObj.Start;
要停止服務(wù)需要調(diào)用 IADsServiceOperations ADSI 對象的 Stop 方法 , 運行結(jié)果如圖 1.114 所示 。
結(jié)論
毫無疑問,通過 ADSI 目錄服務(wù),調(diào)用 WinNT provider 可以更容易實現(xiàn) NT 的管理功能,但它也是一個龐大的系統(tǒng),光 Windows 的活動目錄編程參考就有上千頁,說明我們必須花費大量時間才能真正掌握它的精髓 。

推薦閱讀