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

當前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細頁面

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

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

更新時間:2021-06-22 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

由于目錄對象的標識名可能在某些操作的影響下被改變,但目錄對象的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) 包容器對象的枚舉操作。

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

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接口成員函數(shù),比如:

Dim MyUser as IADs

Dim MyCommonName as String

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

MyCommonName = MyUser.Get("Fullname")

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

Dim MyUser as IADsUser

Dim MyName as String

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

MyName = MyUser.Fullname

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

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

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

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

Dim MyUser As IADsUser

Dim NewName As Variant

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

NewName = "Pan Aimin"

User.Put "FullName", NewName

User.SetInfo

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

(5) 表結(jié)構(gòu)的用法。

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

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


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

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 银川市| 布尔津县| 高唐县| 九江市| 台东县| 孝感市| 南充市| 华亭县| 铜川市| 贵德县| 葵青区| 胶南市| 鹤壁市| 虹口区| 潼关县| 宜章县| 冀州市| 太白县| 潞城市| 玛曲县| 黎城县| 浙江省| 建湖县| 汕尾市| 搜索| 平阴县| 浦北县| 保定市| 鄂尔多斯市| 德令哈市| 靖州| 手游| 岫岩| 科尔| 内江市| 新蔡县| 安义县| 珲春市| 农安县| 沿河| 兴仁县|