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

2021-09-08 05:47:56 字數 3256 閱讀 5558

表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...