成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Delphi深度探索:活動目錄開發二

系統 Windows
ADSI 可以使 Windows NT 管理員的工作變得輕松,而ADSI即活動目錄服務接口是想要使用活動目錄服務的必要途徑,本文就是介紹了對活動目錄的使用。

繼上文Delphi深度探索:活動目錄開發一,本文接著介紹活動目錄的開發。

創建或刪除計算機用戶

通過 WinNT provider ,可以創建或刪除域中任意一臺計算機的用戶,要想創建一個域中指定的計算機的用戶,需要綁定到指定的計算機上。一旦要綁定到計算機對應的 ADSI 容器對象,就需要調用 Create 方法。容器對象的 Create 方法需要兩個參數,一個是要創建的 ADSI 對象的類別,一個是要用來描述 ADSI 對象的名字。調用 Create 方法后會返回新的 ADSI 對象的引用參考,下面代碼演示了如何創建一個用戶:

var

ComputerObj: IADsContainer;

TempUserObj: IUnknown;

UserObj: IADsUser;

PDCName: WideString;

NewUserName: WideString;

AdsPath: WideString;

begin

// 獲取用戶信息

PDCName := InputBox(' 創建新用戶 ', ' 請輸入域名 : ', '');

NewUserName := InputBox(' 創建新用戶 ', ' 請輸入用戶名 : ', '');

// 指定域名路徑

AdsPath := 'WinNT://' + PDCName + ',computer';

// 創建計算機對象

OleCheck(AdsGetObject(PWideChar(AdsPath),

IID_IADsContainer, ComputerObj));

// 創建新用戶

TempUserObj := ComputerObj.Create('user', NewUserName);

UserObj := TempUserObj as IADsUser;

// 設定目錄信息

UserObj.SetInfo;

// 刷新列表

actOpenWinNT.Execute;

刪除用戶也非常類似 , 只不過不需要創建任何的用戶對象 , 可直接調用容器對象 IADsContainer 接口的 Delete 方法 , Delete 方法需要兩個參數 , 第一個是要刪除的對象類別 , 第二個是對象名稱 , 代碼示意如下 :

var

ComputerObj: IADsContainer;

PDCName: WideString;

UserName: WideString;

AdsPath: WideString;

begin

// 獲取用戶信息

PDCName := InputBox(' 刪除用戶 ', ' 請輸入域名 ', '');

UserName := InputBox(' 刪除用戶 ', ' 請輸入要刪除的用戶名 : ', '');

if MessageDlg(' 你是否確信要刪除用戶 : ' +UserName + ' ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then

begin

// 指定域名路徑

AdsPath := 'WinNT://' + PDCName + ',computer';

// 創建計算機對象

OleCheck(AdsGetObject(PWideChar(AdsPath),

IID_IADsContainer, ComputerObj));

// 刪除用戶

ComputerObj.Delete('user', UserName);

// 刷新列表

actOpenWinNT.Execute;

end;

end

查看組中的用戶

通過 WinNT provider ,我們還可以執行各種用戶組的維護任務,比如從組中添加或刪除用戶。下面就來演示如何枚舉組中的用戶并察看用戶相關信息。首先讓下面代碼獲得一個 IADsGroup 對象,然后使用 IADsMember 對象來枚舉 IADsGroup 對象中所有用戶對象,列出不同組中的所有用戶:

var

GroupObj: IADsGroup;

Members: IADsMembers;

AdsPath: WideString;

Enum: IEnumVariant;

TempUserObj: OLEVariant;

UserObj: IADsUser;

TempListObj: TListItem;

Value: LongWord;

begin

// 清空列表

GroupListView.Items.Clear;

// 指定域名路徑

AdsPath := 'WinNT://' + MainFrm.ADSIDomainName.Text +'/' + GroupName;

// 創建組對象

OLECheck(AdsGetObject(PWideChar(AdsPath), IID_IADsGroup,

GroupObj));

// 獲得 members 對象

Members := GroupObj.Members;

// 獲取枚舉對象

Enum := (Members._NewEnum) as IEnumVariant;

// 使用枚舉對象進行查找

while (Enum.Next(1, TempUserObj, Value) = S_OK) do

try

// 保存臨時對象

UserObj := IUnknown(TempUserObj) as IADsUser;

// 創建新的列表項

TempListObj := GroupListView.Items.Add;

// 指定屬性

TempListObj.Caption := UserObj.Name;

except

on E:Exception do

Delphi深度探索:活動目錄開發二

圖 1.113
 

end;

IADsGroup 接口是用來管理 NT 組信息的接口,而它的 Members 屬性是一個管理組中用戶或 ADSI 對象列表的接口。最后使用 IADsUser 接口變量 UserObj 來獲得 NT 組中的用戶信息。

程序運行結果如圖 1.113 所示。

控制 NT 服務

WinNT provider 還可以用來控制 NT 服務、服務器和工作站 , 下面的代碼遍歷 NT 服務 , 并根據相應的計算機添加服務到相應列表中 :

var

UnknownObject: IUnknown;

Computer: IADsContainer;

ComputerPath: WideString;

Enum: IEnumVariant;

AdsTempObj: OLEVariant;

AdsObj: IADs;

Value: LongWord;

begin

if Item.Caption = '' then

Exit;

// 指定域名路徑

ComputerPath := 'WinNT://' + ADSIDomainName.Text +'/' + Item.Caption;

// 創建計算機對象

OleCheck(ADsGetObject(PWideChar(ComputerPath),

IID_IADsComputer, UnknownObject));

// 獲得計算機容器接口

Computer := UnknownObject as IADsContainer;

// 清空服務視圖列表

ServiceListView.Items.Clear;

// 獲取枚舉對象用于遍歷

Enum := (Computer._NewEnum) as IEnumVariant;

// 用枚舉對象進行查找

while (Enum.Next(1, ADsTempObj, Value) = S_OK) do begin

// 保存臨時對象

ADsObj := IUnknown(ADsTempObj) as IADs;

// 如果對象為服務的話 ,添加到視圖中

if AdsObj.Class_ = 'Service' then

AddServiceToList(ADsObj);

end;

end.

要想獲得 NT 服務的信息,需要綁定服務對應的 ADSI 對象, ADSI 提供了 IADsService 對象來維護 NT 服務的信息,下面代碼演示了如何綁定 NT 服務,并顯示服務名:

var

ServiceObj: IADsService;

AdsPath: WideString;

begin

// 指定域名路徑

AdsPath := 'WinNT://' + ComputerName + '/' + ServiceName;

// 獲得服務對象

OLECheck(ADsGetObject(PWideChar(AdsPath),

IID_IADsService, ServiceObj));

// 獲得服務名

lblServiceName.Caption := ' 服務名 : ' + ServiceName;

lblDisplayName.Caption := ' 服務顯示名稱 : ' +

ServiceObj.Get_DisplayName;

要想啟動或停止 NT 服務 , 可以使用 IADsServiceOperations ADSI 對象。同上面一樣需要先綁定到 NT 服務上去,而同前面不一樣的是,這回不是獲得 IADsService ADSI 對象,而是獲得 IADsServiceOperations ADSI 對象:

// 創建計算機對象

OleCheck(AdsGetObject(PWideChar(AdsPath),

IID_IADsServiceOperations, Result));

然后使用 GetServiceObj 函數來綁定到 IADsServiceOperations ADSI 對象上 , 并返回 IADsServiceOperations 接口 :

// 獲得服務對象

ServiceObj := GetServiceObj;

啟動服務需要調用 IADsServiceOperations 接口的 Start 方法:

Delphi深度探索:活動目錄開發二

圖 1.114
 

// 啟動服務 , Get_Status = 1 表明服務正處于停止狀態

if ServiceObj.Get_Status = 1 then

ServiceObj.Start;

要停止服務需要調用 IADsServiceOperations ADSI 對象的 Stop 方法 , 運行結果如圖 1.114 所示。

結論

毫無疑問,通過 ADSI 目錄服務,調用 WinNT provider 可以更容易實現 NT 的管理功能,但它也是一個龐大的系統,光 Windows 的活動目錄編程參考就有上千頁,說明我們必須花費大量時間才能真正掌握它的精髓。

希望本系列Delphi深度探索—活動目錄開發的內容能夠對讀者有所幫助。

【編輯推薦】

  1. 活動目錄用戶如何管理?
  2. 活動目錄中的對象如何操作?
  3. 活動目錄災難管理員應該如何應對
  4. 讓活動目錄在復制過程中更好地運行
  5. 用ADSI實現自動化的活動目錄操作方法
責任編輯:韓亞珊 來源: 中科軟件園
相關推薦

2011-07-19 16:28:55

活動目錄ADSI

2010-11-01 05:54:41

2010-04-15 11:39:22

微軟活動目錄基礎

2011-08-08 09:17:32

活動目錄ActiveDirec

2011-08-18 09:46:40

活動目錄驗證原理

2024-07-20 00:00:00

2017-10-25 11:17:18

數據

2011-07-12 16:22:31

活動目錄

2010-04-15 11:47:37

微軟活動目錄邏輯結構

2011-06-27 09:42:46

2011-07-15 10:20:34

活動目錄

2011-01-05 10:30:42

活動目錄Powershell

2010-04-25 23:13:26

活動目錄物理結構

2010-10-22 11:01:42

Windows Pow

2010-08-30 15:57:25

2012-03-20 14:17:33

活動目錄

2011-07-15 13:35:52

Windows 200

2009-07-16 09:48:29

數據庫連接

2011-11-04 09:35:58

活動目錄

2011-07-27 10:30:21

活動目錄
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美精品片| 欧美伊人久久久久久久久影院 | 黄色大片免费网站 | 日韩成人影院在线观看 | 国产精品久久久久久久久免费高清 | 午夜精品一区二区三区在线播放 | 在线日韩视频 | 精品一区二区三区在线视频 | 国产一区二区成人 | 国产精品久久久久久久久久久久久 | 久久久区 | 成人片网址 | 日批av| 中文字幕在线二区 | 欧美一区二区三区精品 | 免费一级淫片aaa片毛片a级 | 成人av一区二区亚洲精 | 日本特黄a级高清免费大片 国产精品久久性 | 很黄很污的网站 | 一区二区在线免费观看视频 | 日本大片在线播放 | 亚洲精品一区二区三区四区高清 | 欧美激情五月 | 免费中文字幕日韩欧美 | 国产农村妇女精品一二区 | 精品国产一区二区国模嫣然 | 国产亚洲欧美另类一区二区三区 | 亚洲人成在线观看 | 久久国产精品视频 | 欧美在线观看一区 | 天天躁日日躁性色aⅴ电影 免费在线观看成年人视频 国产欧美精品 | 九九久久国产精品 | 国产精品精品视频一区二区三区 | 视频一区二区三区中文字幕 | 亚洲成av人片在线观看 | 国产美女在线精品免费 | 久久33| 日韩一区二区黄色片 | 亚洲免费一区 | 91精品国产乱码久久久久久 | 国产精产国品一二三产区视频 |