客戶程式也可以利用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 目前,在乙個企業內部存在多...