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

Delphi深度探索-活動(dòng)目錄開發(fā)( 三 )


var
ComputerObj: IADsContainer;
TempUserObj: IUnknown;
UserObj: IADsUser;
PDCName: WideString;
NewUserName: WideString;
AdsPath: WideString;
begin
// 獲取用戶信息
PDCName := InputBox(" 創(chuàng)建新用戶 ", " 請輸入域名 : ", "");
NewUserName := InputBox(" 創(chuàng)建新用戶 ", " 請輸入用戶名 : ", "");
// 指定域名路徑
AdsPath := "WinNT://"PDCName",computer";
// 創(chuàng)建計(jì)算機(jī)對象
OleCheck(AdsGetObject(PWideChar(AdsPath),
IID_IADsContainer, ComputerObj));
// 創(chuàng)建新用戶
TempUserObj := ComputerObj.Create("user", NewUserName);
UserObj := TempUserObj as IADsUser;
// 設(shè)定目錄信息
UserObj.SetInfo;
// 刷新列表
actOpenWinNT.Execute;
刪除用戶也非常類似,只不過不需要?jiǎng)?chuàng)建任何的用戶對象,可直接調(diào)用容器對象 IADsContainer 接口的 Delete 方法,Delete 方法需要兩個(gè)參數(shù),第一個(gè)是要?jiǎng)h除的對象類別,第二個(gè)是對象名稱,代碼示意如下 :
var
ComputerObj: IADsContainer;
PDCName: WideString;
UserName: WideString;
AdsPath: WideString;
begin
// 獲取用戶信息
PDCName := InputBox(" 刪除用戶 ", " 請輸入域名 ", "");
UserName := InputBox(" 刪除用戶 ", " 請輸入要?jiǎng)h除的用戶名 : ", "");
if MessageDlg(" 你是否確信要?jiǎng)h除用戶 : "UserName" ?", mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
// 指定域名路徑
AdsPath := "WinNT://"PDCName",computer";
// 創(chuàng)建計(jì)算機(jī)對象
OleCheck(AdsGetObject(PWideChar(AdsPath),
IID_IADsContainer, ComputerObj));
// 刪除用戶
ComputerObj.Delete("user", UserName);
// 刷新列表
actOpenWinNT.Execute;
end;
end
查看組中的用戶
通過 WinNT provider,我們還可以執(zhí)行各種用戶組的維護(hù)任務(wù),比如從組中添加或刪除用戶 。下面就來演示如何枚舉組中的用戶并察看用戶相關(guān)信息 。首先讓下面代碼獲得一個(gè) 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;
// 創(chuàng)建組對象
OLECheck(AdsGetObject(PWideChar(AdsPath), IID_IADsGroup,
GroupObj));
// 獲得 members 對象
Members := GroupObj.Members;
// 獲取枚舉對象
Enum := (Members._NewEnum) as IEnumVariant;
// 使用枚舉對象進(jìn)行查找
while (Enum.Next(1, TempUserObj, Value) = S_OK) do
try
// 保存臨時(shí)對象
UserObj := IUnknown(TempUserObj) as IADsUser;
// 創(chuàng)建新的列表項(xiàng)
TempListObj := GroupListView.Items.Add;
// 指定屬性
TempListObj.Caption := UserObj.Name;
except
on E:Exception do
圖 1.113
end;
IADsGroup 接口是用來管理 NT 組信息的接口,而它的 Members 屬性是一個(gè)管理組中用戶或 ADSI 對象列表的接口 。最后使用 IADsUser 接口變量 UserObj 來獲得 NT 組中的用戶信息 。
程序運(yùn)行結(jié)果如圖 1.113 所示 。
控制 NT 服務(wù)
WinNT provider 還可以用來控制 NT 服務(wù)、服務(wù)器和工作站,下面的代碼遍歷 NT 服務(wù),并根據(jù)相應(yīng)的計(jì)算機(jī)添加服務(wù)到相應(yīng)列表中 :
var
UnknownObject: IUnknown;
Computer: IADsContainer;
ComputerPath: WideString;
Enum: IEnumVariant;
AdsTempObj: OLEVariant;
AdsObj: IADs;
Value: LongWord;
begin
if Item.Caption = "" then

推薦閱讀