目錄服務技術介紹 ADSI(六)

2021-09-08 05:47:56 字數 2235 閱讀 9391

客戶程式也可以利用iadsclass、iadsproperty和iadssyntax介面在執行時刻確定目錄物件的詳細屬性資訊。操作步驟如下: 

a.    先繫結到目錄物件的表結構物件,可以直接訪問目錄物件的「schema」屬性。

b.    用列舉的辦法從表結構物件中找到強制屬性或者可選屬性,如果客戶知道要訪問的屬性名則可以跳過這一步。

c.    繫結到表結構物件的包容器物件。

d.    從表結構物件的包容器物件獲得屬性的定義物件。

e.    從屬性定義物件獲取屬性資訊,包括屬性的語法資訊等。

下面的**演示了如何從獲得表結構物件到訪問「owner」屬性的細節資訊的過程:

dim obj as iads

dim cl as iadsclass

dim pr as iadsproperty

dim sy as iadssyntax

dim sc as iadscontainer

set obj = getobject("winnt://mydomain/mymachine")

set cl = getobject(obj.schema)

set sc = getobject(cl.parent)

set pr = sc.getobject("property","owner")

msgbox "attribute: " & pr.name

msgbox "syntax:    " & pr.syntax

set sy = getobject(sc.adspath & "/" & pr.syntax)

msgbox "syntax object: " & sy.name & " of oleautodatatype: " & sy.oleautodatatype

(6) 增加或者刪除目錄物件。

利用包容器物件的iadscontainer介面的方法(見表4),我們可以很方便地增加或者刪除目錄物件,舉例如下:

dim container as iadscontainer

dim newuser as iadsuser

set container = getobject("winnt://mydomain")

set newuser = container.create("user", "panaimin")

' write it back to the ds

newuser.setinfo

' set jane's password.

newuser.setpassword("123")

' delete the user.

call container.delete("user","mary")

adsi的各種操作比較簡單,只要我們能夠理解adsi的基本結構,並且對核心的幾個介面以及常用提供者的一些介面有所了解,就可以用一致的方法訪問目錄服務,這也說明了adsi作為通用目錄服務標準為程式設計師帶來的最大益處。

實現adsi提供者要比使用adsi複雜得多,通常情況下,我們只需使用系統已經定義的adsi提供者。但如果確實應用需要,我們可以實現自定義的adsi提供者。為了實現乙個adsi提供者,有一些特性是必須要支援的,而其它的特性則是可選的。下面是一些必須要實現的特性:

(1)     路徑解析使用com的命名規範(moniker),其中名字空間物件必須要實現iparsedisplayname::parsedisplayname函式以及iadsopendsobject介面。

(2)     iads介面必須實現屬性的快取技術,只有iads::getinfo函式和iads::setinfo函式才重新整理快取或提交到底層目錄服務。

(3)     每乙個包容器物件必須實現iadscontainer介面。

(4)     所有的adsi物件都支援idispatch介面,以便自動化客戶訪問屬性和方法。

(5)     對於非自動化客戶通過idirectoryobject訪問adsi目錄物件,而不是iads介面。

(6)     adsi至少實現乙個表結構包容器物件,以及相應的語法、屬性和類別物件,分別支援介面iadssyntax、iadsproperty或iadsclass,每個根節點必須包含它自己的表結構包容器物件。

為了讓adsi能夠找到自定義的提供者,我們必須在實現了adsi提供者之後,把它註冊到系統登錄檔中。在hkey_local_machine\software\microsoft\ads\providers鍵下新增新的提供者項(指向提供者元件的progid),如果讀者感興趣,可以檢查該鍵項,以便確定當前系統已經安裝了哪些提供者。

目錄服務技術介紹 ADSI(六)

客戶程式也可以利用iadsclass iadsproperty和iadssyntax介面在執行時刻確定目錄物件的詳細屬性資訊。操作步驟如下 a.先繫結到目錄物件的表結構物件,可以直接訪問目錄物件的 schema 屬性。b.用列舉的辦法從表結構物件中找到強制屬性或者可選屬性,如果客戶知道要訪問的屬性名...

目錄服務技術介紹 ADSI(一)

目錄服務技術介紹 adsi 潘愛民 北京大學計算機科學技術研究所 100871 摘要 本文介紹了microsoft提出的活動目錄服務介面 adsi 技術。文章首先講述了adsi的結構,然後介紹了adsi的 程式設計 方法,最後通過例子簡單說明了adsi的用法。一 adsi簡介 adsi active...

目錄服務技術介紹 ADSI(二)

下面列出目前已經實現的adsi目錄服務 1 windows nt域使用者管理。2 ldap exchange server 目錄服務。3 internet information server 4 nds novell netware directory services 目前,在乙個企業內部存在多...