Синтаксис атрибута ADSI
Каждый атрибут в каталоге имеет связанный синтаксис. Например, целочисленное, строковое, числовое и т. д. ADSI определяет собственный синтаксис, который сопоставляется с синтаксисом собственного каталога. В этом разделе описываются типы синтаксисов атрибутов в ADSI.
Строка различающегося имени
Syntax Type: ADSTYPE_DN_STRING
Различающееся имя полезно для связывания двух объектов вместе. Например, он может создать ссылку, которая делает объект Алиса менеджером объекта Bob. Если объект Alice перемещается в другое место, связь диспетчера между Алиса и Бобом обновляется автоматически.
Различающееся имя должно содержать допустимый объект различающегося имени. Если различающееся имя не соответствует допустимому существующему объекту, большинство серверов отклоняют запрос и возвращают ошибку нарушения ограничения.
Примеры:
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 );
Строка точного регистра и без учета регистра
Syntax Types: ADSTYPE_CASE_IGNORE_STRING, ADSTYPE_CASE_EXACT_STRING.
Точные строки регистра — это строка с учетом регистра, а строка "Пропустить регистр" является нечувствительной строкой регистра. В каталоге используется большой процент атрибутов.
Примечание.
Каталог может или не может храниться в виде строки Юникода. Однако ADSI принимает и возвращает строки Юникода.
Пример:
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) YMMDD; (2) HHMM или HHMMSS (оба являются приемлемыми); и (3) "Z", чтобы указать, что заданное время — среднее время Гринвича (GMT) или "+/-HHMM", чтобы указать, что заданное время является локальным временем с заданным разностным значением от GMT. Разностное значение основано на формуле: GMT=Local+Differential.
Примечание.
Первые две цифры года не хранятся в этой строке.
Некоторые примеры юридических значений: "910131455Z", "9101314503Z", "910131455-0500", "910131145503+0130". Эта строка хранится как символы ASCII с одним байтом, и номер кодовой страницы с ним не хранится.
Несмотря на то, что порядок поддерживается, он выполняется только как нечувствительный к регистру тип строки ASCII, а не правильно интерпретируя смысл строк.
Принимается любое допустимое строковое значение. Попытка не предпринята, чтобы убедиться, что строка содержит допустимую строку времени.
Обобщенное время
Syntax Type: ADSTYPE_UTC_TIME
Если определен новый атрибут для хранения значений времени, следует использовать синтаксис GeneralizedTime. Синтаксис GeneralizedTime использует четыре символа для представления года вместо двух, как и в формате UTCTime.
Формат синтаксиса GeneralizedTime — YYYYMMDDDHHMMSS.0Z. Пример допустимого значения — "200109280600000.0Z". Значение "Z" указывает, что время не разностно. Active Directory сохраняет дату и время в качестве среднего времени Гринвича (GMT). Если разностное время не указано, GMT — это значение по умолчанию.
Если время указано в часовом поясе, отличном от GMT, разница между часовыми поясами и GMT добавляется к строке вместо "Z" в форме "YYYMMDDDHHMMSS.0[+/]HHMM". Пример допустимого значения — "200109280600000.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-разрядное числовое значение со знаком. Большие целые числа фактически реализуются как COM-объекты в интерфейсе IADsLargeInteger . Методы 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
См. также