人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

目錄服務技術介紹——ADSI(5)

目錄服務技術介紹——ADSI(5)

更新時間:2021-06-22 文章作者:未知 信息來源:網絡 閱讀次數:

由于目錄對象的標識名可能在某些操作的影響下被改變,但目錄對象的objectGUID屬性永遠不會改變,所以我們可以直接在LDAP路徑中指定此GUID,客戶程序直接綁定到此對象,下面的代碼顯示了這種用法:

IADs *pADs;

LPWSTR pszFilter = L"LDAP://MyServer/<GUID=63560110f7e1d111a6bfaaaf842b9cfa>";

hr = ADsGetObject( pszFilter, IID_IADs, (void**)&pADs);

等價的VB代碼如下:

Dim myObject as IADs

Set myObject = GetObject("LDAP://<GUID=63560110f7e1d111a6bfaaaf842b9cfa>")

(2) 包容器對象的枚舉操作。

客戶程序通過上面的方法可以直接到達指定的目錄對象或者包容器對象,我們也可以從某個節點開始訪問目錄子樹,利用IADsContainer接口所提供的方法,我們可以實現枚舉操作,舉例如下:

Dim MyObject as IADs

Dim Child as IADs

Dim Container as IADsContainer



On Error Resume Next

Set MyObject = GetObject("LDAP://MyServer")

Set Container = MyObject

If Err = 0 Then

For Each Child in Container

Debug.Print Child.Name

Next Child

EndIf

通過這種枚舉操作,我們可以訪問目錄子樹中的所有包容器對象和目錄對象。

(3) 讀取目錄對象的屬性。

讀取對象屬性最簡單的方法莫過于直接通過對象的IADs::Get或者IADs::GetEx接口成員函數,比如:

Dim MyUser as IADs

Dim MyCommonName as String

set MyUser = GetObject("WinNT://MyServer/MyName")

MyCommonName = MyUser.Get("Fullname")

當然如果我們已經知道了目錄對象的其它接口,也可以用更直接的方法訪問屬性,比如:

Dim MyUser as IADsUser

Dim MyName as String

Set MyUser = GetObject("WinNT://MyServer/MyName")

MyName = MyUser.Fullname

客戶程序在訪問目錄對象時,通常ADSI已經為對象的屬性作了緩存。當對象被創建時,其屬性緩存為空,如果客戶調用IADs::GetInfo從底層目錄服務裝載對象屬性,那么它就會填滿緩存,因為Get或者其它的Get_propertymethod函數都隱式調用了GetInfo函數,所以客戶只要調用Get函數取一次屬性值,以后的Get函數就直接從緩存中讀取屬性值。如果客戶程序要刷新緩存中的屬性值,可以顯式調用IADs::GetInfo函數。使用緩存可以避免頻繁地從服務器讀取屬性數據,從而降低網絡負擔。

如果客戶程序不希望在緩存狀態下讀取屬性值,可以使用目錄對象的另一個接口IDirectoryObject,它可以直接訪問底層目錄服務的對象屬性數據,為了優化性能,每次它可以取多個屬性值。

(4) 設置目錄對象的屬性。

與讀取屬性相對應,設置對象屬性可通過對象的IADs::Put或者IADs::PutEx接口成員函數實現,但是這兩個函數只是把屬性值寫到緩存中,客戶程序必須顯式調用IADs::SetInfo成員函數,以便使更新后的屬性值反映到底層目錄服務中。舉例如下:

Dim MyUser As IADsUser

Dim NewName As Variant

Set MyUser = GetObject("WinNT://MyServer/MyName")

NewName = "Pan Aimin"

User.Put "FullName", NewName

User.SetInfo

當客戶程序創建了一個新的目錄對象之后,只有在調用了IADs::SetInfo函數后,目錄對象才真正被永久創建,否則只是緩存中的對象而已。

(5) 表結構的用法。

ADSI提供了用表結構描述目錄對象屬性的機制,客戶程序可以在運行時刻訪問目錄對象表結構信息,下面的代碼演示了表結構的基本用法:

Dim Computer As IADsComputer

Dim Class As IADsClass

Dim V As Variant

Set Computer = GetObject("WinNT://MyDomain/MyMachine")

Set Class = GetObject(c.Schema)

Debug.Print "Properties in this Class: "

For Each V In Class.MandatoryProperties

Debug.Print " "; V

Next V

For Each V In Class.OptionalProperties

Debug.Print " "; V

Next V


溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 潞西市| 百色市| 独山县| 梁山县| 竹北市| 梅河口市| 元阳县| 洛隆县| 和静县| 桐柏县| 蓬莱市| 来安县| 金寨县| 长葛市| 囊谦县| 南投市| 顺义区| 集安市| 礼泉县| 六枝特区| 安泽县| 南靖县| 陵水| 旬阳县| 碌曲县| 永丰县| 西安市| 衡阳市| 宜川县| 喀什市| 建平县| 遵义市| 宜君县| 桐梓县| 叙永县| 武穴市| 四会市| 来安县| 霍林郭勒市| 桂东县| 石狮市|