表1 iads介面的屬性
屬性名型別說明
name
bstr
物件名字
adspath
bstr
物件的全路徑
class
bstr
物件的類別(表結構物件的路徑)
guid
bstr
物件的全域性唯一標識(guid)
parent
bstr
父包容器的路徑
schema
bstr
表結構物件的路徑
表2 iads介面的方法
方法名引數
說明getinfo
用屬性值重新裝入物件
setinfo
提交屬性值的變化
getbstr bstrname,
variant *pvprop
獲取指定名字的屬性值
putbstr bstrname,
variant vprop
設定指定名字的屬性值
getex
bstr bstrname,
variant *pvprop
獲取指定名字的單值或多值屬性值
putex
long lncontrolcode,
bstr bstrname,
variant vprop
設定指定名字的單值或多值屬性值;若lncontrolcode為ads_property_clear,可以刪除屬性
getinfoex
variant vprops,
long lreserved
與getinfo類似,優化處理
另乙個重要的介面是iadscontainer,它是所有包容器物件必須要實現的介面。iadscontainer介面的屬性和方法如表3和表4所示。
表3 iadscontainer介面的屬性
屬性名型別
說明count
long
包容器中物件的個數
_newenum
lpunknown
返回包容器中物件的列舉器
filter
variant
bstr陣列,每個bstr指定了過濾器的定義
hints
variant
屬性陣列,其用法與getinfoex類似
表4 iadscontainer介面的方法
方法名引數
說明getobject
bstr bstrclass,
bstr bstrrelativename,
lpdispatch *pnewobject
得到包容器物件中指定物件的idispatch介面指標
create
bstr bstrclass,
bstr bstrrelativename,
lpdispatch *pnewobject
在包容器物件中建立指定名字的目錄物件,並返回物件的idispatch介面指標
delete
bstr bstrclass,
bstr bstrrelativename
刪除包容器物件中指定的目錄物件
copyhere
bstr bstrsource,
bstr bstrnewname,
lpdispatch* pnewobject
拷貝目錄物件到當前包容器物件中
movehere
bstr bstrsource,
bstr bstrnewname,
lpdispatch* pnewobject
移動目錄物件到當前包容器物件中
iads和iadscontainer介面分別代表了目錄服務中的目錄物件和包容器物件,為了對乙個名字空間進行各種目錄操作,我們必須從最基本的根出發,adsi為我們提供了介面iadsnamespaces用以表達名字空間物件。iadsnamespaces介面比較簡單,它只有乙個屬性「defaultcontainer」,此屬性指定了客戶程式訪問的基本包容器物件的路徑。
僅僅乙個iads介面還難以表達乙個目錄物件的全部特徵,前面已經提到,adsi用類別來定義目錄物件的特徵,並且類別物件本身也是目錄物件,它除了實現iads介面外,還實現了iadsclass介面。iadsclass介面從iads派生,其屬性如表5所示。
表5 iadsclass介面的屬性
屬性名型別
說明primaryinte***ce
bstr
可直接訪問到此類別屬性的介面id
clsid
bstr
與之相連的com物件的clsid
oidbstr
定義此類別的物件識別符號
abstract
variant_bool
指示此類別是否為抽象類,若是的話,則它不能被例項化,但其它類可以繼承該類別
auxiliary
variant_bool
指示此類別是否為輔助類
mandatoryproperties
variant
與之相連的目錄物件必須支援的屬性名陣列
optionalproperties
variant
與之相連的目錄物件支援的可選屬性名陣列
namingproperties
variant
與之相連的目錄物件支援的命名屬性名陣列(用於指示相對標識名rdn)
derivedfrom
variant
此類所繼承的類的路徑陣列
auxderivedfrom
variant
此類所繼承的輔助類的路徑陣列
possiblesuperiors
variant
可能包含此類例項的類的路徑陣列
containment
variant
可能被包含此類中的類的路徑陣列
container
variant_bool
指示此類是否為包容器物件類別
helpfilename
bstr
幫助檔名
helpfilecontext
long
幫助環境識別符號
iadsclass介面只有乙個方法qualifiers,用來返回描述附加限制物件的集合物件。在iadsclass介面的屬性中,primaryinte***ce屬性可直接指示客戶程式去請求對應的介面id,以便訪問該類別所指示的屬性,比如,在目錄服務中,「user」類指示使用者物件實現了乙個adsi介面iadsuser,它包含屬性「姓」、「名」、「職稱」、「**」等等。
目錄服務技術介紹 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 目前,在乙個企業內部存在多...
目錄服務技術介紹 ADSI(五)
由於目錄物件的標識名可能在某些操作的影響下被改變,但目錄物件的objectguid屬性永遠不會改變,所以我們可以直接在ldap路徑中指定此guid,客戶程式直接繫結到此物件,下面的 顯示了這種用法 iads pads lpwstr pszfilter l ldap myserver hr adsge...