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
相關主題