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

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


活動目錄是 Windows NT 4.0 和 Windows 2000 使用的目錄服務(wù) 。要想使用活動目錄服務(wù),需要調(diào)用 ADSI( 活動目錄服務(wù)接口 )。ADSI 是一組以 COM 接口的形式提供目錄服務(wù)的,程序員可以通過 ADSI 存取四種網(wǎng)絡(luò)目錄結(jié)構(gòu): WinNT (Microsoft SAM 數(shù)據(jù)庫 ) 、 LDAP ( 輕量目錄存取協(xié)議 ) 、 NDS (NetWare 目錄服務(wù) ) 和 NWCOMPAT (Novell NetWare 3.x)。
ADSI 可以使 Windows NT 管理員的工作變得輕松 。ADSI 支持管理員執(zhí)行一些一般的管理任務(wù),比如添加新用戶、管理打印機、安全設(shè)定和控制 NT 域 。因為 ADSI 使用 COM 接口,任何支持 COM 的編程語言像 Delphi 、 BCB 、 VB 、 VC 等都可以調(diào)用 ADSI。
圖 1.111
活動目錄運行在 Windows NT 4.0 和 Windows 2000 上 ??蛻舳顺绦蚩梢赃\行在 Windows 95 、 Windows 98 、 Windows NT 4.0 和 Windows 2000 上 。為了使用 ADSI,必須安裝 ADSI COM 接口 。ADSI 2.5 SDK 可以從 Microsoft ADSI 網(wǎng)址 http://www.microsoft.com/adsi 下載。SDK 包括文檔、在線幫助和很多例子,不過不幸的是這些例子都是針對 VB 和 VC 的,這里我們將演示如何使用 Delphi 調(diào)用 ADSI。
程序演示
圖 1.111 所示的程序演示了如何調(diào)用 WinNT provider 提供的功能 。演示程序用來連接到一個域,一旦連接到域,程序?qū)谐鲈?PDC 上找到的 NT 的用戶和組以及域中的計算機 。同時這個程序還演示了如何察看域中計算機上的服務(wù)和察看、添加、刪除 NT 組中的用戶 。
使用 ADSI 控制 Windows NT/2000
ADSI 可以使我們控制用戶、組、計算機、文件共享、打印任務(wù)、打印隊列和服務(wù)等系統(tǒng)資源 。要想在 Delphi 中調(diào)用 ADSI,需要引入活動目錄類型庫,調(diào)用菜單 Project | Import Type Library 命令,選擇 ActiveDs (Version 1.0) 點確認,Delphi 會生成相應的封裝文件 。
綁定 Win NT 目錄服務(wù)
連接 Win NT 目錄服務(wù)就是找到域控制器然后綁定到相應的對象上 。綁定可以通過 ADsGetObject 或 ADsOpenObject 函數(shù)來實現(xiàn) 。ADsGetObject 函數(shù)聲明如下:
function ADsGetObject(lpszPathName: PWideChar; const riid: TIID; out obj): HResult; stdcall; external "activeds.dll";
第一個參數(shù)是對象的路徑名,第二個參數(shù)是對象的接口標識符,第三個參數(shù)用于返回得到的被請求的接口指針 。缺省條件下,函數(shù)根據(jù)當前用戶進行安全認證 。
ADsOpenObject 函數(shù)在不同的安全認證機制下綁定 ADSI 對象,它主要是通過調(diào)用參數(shù)返回的用戶名和口令來認證的 。函數(shù)聲明如下:
function ADsOpenObject(lpszPathName: PWideChar; lpszUserName: PWideChar; lpszPassWord: PWideChar; dwReserved: LongInt; const riid: TIID; out obj): HResult; stdcall; external "activeds.dll";
第一個參數(shù)意義同上,第二、三個參數(shù)是調(diào)用者提供的用戶名和口令,第四個參數(shù)是一個保留的 provider 標識,用來確定綁定的認證方法,第五個參數(shù)是請求接口的接口標識符,最后一個參數(shù)用來返回請求的接口指針 。
第一個函數(shù)使用登錄用戶缺省的信任級別,而第二個函數(shù)允許開發(fā)者指定特殊的安全信任機制來綁定 ADSI 對象 。下面代碼演示了兩種不同的綁定方式:
procedure TMainFrm.actOpenWinNTExecute(Sender: TObject);
var
UnknownObject: IUnknown;
DomainPath: WideString;
Domain: IADsContainer;
begin
// 指定域路徑
DomainPath := "WinNT://"ADSIDomainName.Text;
// 如果使用用戶登錄了信息
if cbUseLogin.Checked then
// 使用用戶登錄的信息創(chuàng)建域?qū)ο?br /> OleCheck(AdsOpenObject(PWideChar(DomainPath),
PWideChar(ADSIUsername.Text),
PWideChar(ADSIPassword.Text), 0, IID_IADsContainer,
UnknownObject));
else
OleCheck(ADsGetObject(PWideChar(DomainPath),
IID_IADsContainer, UnknownObject));

推薦閱讀