共用方式為


ADSI 屬性語法

目錄中的每個屬性都有相關聯的語法。 例如,整數、字串、數值等等。 ADSI 會定義對應至原生目錄語法的專屬語法。 本節描述 ADSI 中的屬性語法類型。

辨別名稱字串

Syntax Type: ADSTYPE_DN_STRING

辨別名稱有助於將兩個對象連結在一起。 例如,它可以建立連結,讓Alice對象成為Bob物件的管理員。 如果Alice物件移至不同的位置,Alice與Bob之間的管理員連結會自動更新。

辨別名稱必須包含有效的辨別名稱物件。 如果辨別名稱未對應至有效的現有物件,大部分伺服器都會拒絕要求並傳回條件約束違規錯誤。

範例:

Set x = GetObject("LDAP://CN=Bob, OU=Sales,DC=Fabrikam, DC=com)
x.Put "manager", "CN=Alice, OU=Sales, DC=Fabrikam, DC=COM"
x.SetInfo
 
PADS_ATTR_INFO pInfo;
// .. IDirectoryObject::GetObjectAttribute
printf("%S\n", pInfo->pADsValues->DNString );

Case Exact String 和 Case Ignore String

Syntax Types: ADSTYPE_CASE_IGNORE_STRING, ADSTYPE_CASE_EXACT_STRING.

Case Exact String 是區分大小寫的字串,而 Case Ignore String 是不區分大小寫的字串。 目錄中大量屬性會使用此語法。

注意

目錄不一定會將這個儲存為 Unicode 字串。 不過,ADSI 會接受並傳回 Unicode 字串。

 

範例:

Dim propList As IADsPropertyList
Set propList = GetObject("LDAP://DC=Fabrikam,DC=com")
Set propVal = New PropertyValue
 
' --- Property Value ---
propVal.CaseIgnoreString = "Fabrikam, Inc - Seattle, WA"
propVal.ADsType = ADSTYPE_CASE_IGNORE_STRING

可列印字串

Syntax Type: ADSTYPE_PRINTABLE_STRING

此語法用於字串值的屬性,其中大寫和小寫被視為不相等的比較,例如,“FABRIKAM” 和 “Fabrikam” 不相符。 ADSI 接受 Printable-String 的任何內容;它不會嘗試確認它們確實可列印。

數值字串

Syntax Type: ADSTYPE_NUMERIC_STRING

在此語法中,字串會與可列印字串中相符,不同之處在於比較中會忽略所有空格字元。 ADSI 不會執行值檢查,以確保只有數位和空格會出現在此語法的值中。 Active Directory 接受數值字串的任何內容;它不會驗證字元是否為數值。

UTC 時間

Syntax Type: ADSTYPE_UTC_TIME

此語法會將日期和時間儲存在單一字串中。 字串格式包含三個串連部分:(1) YYMMDD:(2) HHMM 或 HHMMSS (兩者皆可接受):和 (3) “Z” 表示指定的時間是格林威治標準時間 (GMT), 或 “+/-HHMM” ,表示指定的時間是當地時間與 GMT 的指定差異。 差異是以公式為基礎:GMT=Local+differential。

注意

年份的前兩位數不會儲存在此字串中。

 

法律值的一些範例包括 “9101311455Z”、“910131145503Z”、“9101314455-0500”、“910131145503+0130”。 此字串會儲存為單一位元組 ASCII 字元,而且不會儲存任何代碼頁碼。

雖然支援排序,但它只會做為 ASCII 不區分大小寫的字串排序,而不是藉由正確解譯字串的意義。

接受任何有效的字串值。 不會嘗試確保字串包含有效的時間字串。

一般化時間

Syntax Type: ADSTYPE_UTC_TIME

如果要定義儲存時間值的新屬性,則應該使用 GeneralizedTime 語法。 GeneralizedTime 語法使用四個字元來表示年份,而不是使用 UTCTime 的兩個字元。

GeneralizedTime 語法的格式為 「YYYYYMMDDHHMMSS.0Z」。。 可接受的值範例為 「20010928060000.0Z」。。 “Z” 表示沒有時間差異。 Active Directory 會將日期/時間儲存為格林威治標準時間(GMT)。 如果未指定時間差異,GMT 是預設值。

如果在 GMT 以外的時區中指定時間,時區與 GMT 之間的差異會附加至字串,而不是格式為 “YYYYYMMDDHMMSS.0[+/-]HHMM” 的 “Z”。 可接受的值為 “20010928060000.0+0200”。

差異是以公式為基礎:GMT=Local+differential。

布林值

Syntax Type: ADSTYPE_BOOLEAN

Active Directory 只接受此語法的帶正負號 32 位值。 它會將零視為 FALSE ,並將所有非零值視為 TRUE

整數

Syntax Type: ADSTYPE_INTEGER

32 位帶正負號的數值。

大整數

Syntax Type: ADSTYPE_LARGE_INTEGER

64 位帶正負號的數值。 大型整數實際上會在 IADsLargeInteger 介面上實作為 COM 物件。 HighPart 和 LowPart 方法可用來存取大整數值的兩半 32 位。

範例:

Dim x as IADsLargeInteger
Set o = GetObject("LDAP://DC=Fabrikam,DC=com")
Set x = o.Get("UsnCreated")
Debug.Print x.HighPart
Debug.Print x.LowPart

八進位字串

Syntax Type: ADSTYPE_OCTET_STRING

八位字串會以位元組的變異數位形式傳回。 這包括大小計數(八位數目),後面接著一系列八位。 八位是8位位元組,因此一系列的八位是二進位數據的字串。

物件類別

Syntax Type: ADSTYPE_CASE_IGNORE_STRING

物件類別是指定架構類別的唯一物件標識碼。 每個物件實例的類別是由 objectClass 屬性所識別。 建立時,您永遠無法變更物件類別。 objectClass 是多個值屬性。 它會列出 物件的特定類別,以及衍生特定類別的所有結構化或抽象類別的類別。 這包括 Top,這是所有其他類別最終衍生的來源類別。 Active Directory 不會列出 objectClass 屬性中的輔助類別。

安全性描述元

Syntax Type: ADSTYPE_NT_SECURITY_DESCRIPTOR

訪問許可權會定義安全性主體嘗試在 Active Directory 物件上執行作業時具備哪些能力。 安全性描述項描述與 對象相關聯的訪問控制資訊。

安全性描述元會儲存為 nTSecurityDescriptor 屬性中目錄對象的屬性。 當已驗證的用戶嘗試存取目錄物件時,目錄伺服器會根據物件安全性描述元來決定授與或拒絕給使用者的存取權。

ADS_SD_CONTROL_ENUM列舉會指定安全性描述元的控制旗標。

下列程式代碼範例示範如何取得安全性描述元。

' Obtain a security descriptor.
Dim x as IADs
Dim sd as IADsSecurityDescriptor
Dim acl as IADsAccessControlList
 
Set x = GetObject("LDAP://DC=Fabrikam, DC=com")
Set sd = x.Get("nTSecurityDescriptor")
 
Debug.Print sd.Control
Debug.Print sd.Group
Debug.Print sd.Owner
Debug.Print sd.Revision
 
Set acl = sd.DiscretionaryAcl
Set sacl = sd.SystemAcl

Active Directory 屬性的語法

選擇語法

如何指定比較值