Syntax des ADSI-Attributs
Jedes Attribut im Verzeichnis verfügt über eine zugeordnete Syntax. Beispielsweise ganzzahlige Zahlen, Zeichenfolgen, numerische Usw. ADSI definiert eine eigene Syntax, die der nativen Verzeichnissyntax zugeordnet ist. In diesem Abschnitt werden die Typen von Attributsyntaxen in ADSI beschrieben.
Distinguished Name String
Syntax Type: ADSTYPE_DN_STRING
Der distinguished Name ist nützlich, um zwei Objekte miteinander zu verknüpfen. Sie kann beispielsweise einen Link erstellen, der das Alice-Objekt zu einem Manager des Bob-Objekts macht. Wenn das Alice-Objekt an einen anderen Ort verschoben wird, wird die Managerverbindung zwischen Alice und Bob automatisch aktualisiert.
Der distinguished Name muss ein gültiges Distinguished Name-Objekt enthalten. Wenn der distinguished Name nicht einem gültigen vorhandenen Objekt entspricht, weisen die meisten Server die Anforderung ab und geben einen Fehler aufgrund einer Einschränkungsverletzung zurück.
Beispiele:
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 );
Zeichenfolge für Groß-/Kleinschreibung und Groß-/Kleinschreibung ignorieren
Syntax Types: ADSTYPE_CASE_IGNORE_STRING, ADSTYPE_CASE_EXACT_STRING.
Genaue Zeichenfolge ist eine Zeichenfolge, bei der die Groß-/Kleinschreibung beachtet wird, während die Zeichenfolge "Groß-/Kleinschreibung ignoriert" eine Zeichenfolge ist, bei der die Groß-/Kleinschreibung nicht beachtet wird. Ein großer Prozentsatz der Attribute im Verzeichnis verwendet diese Syntax.
Hinweis
Das Verzeichnis kann dies als Unicode-Zeichenfolge speichern oder auch nicht. ADSI akzeptiert jedoch Unicode-Zeichenfolgen und gibt diese zurück.
Beispiel:
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
Druckbare Zeichenfolge
Syntax Type: ADSTYPE_PRINTABLE_STRING
Diese Syntax wird für Attribute mit Zeichenfolgenwerten verwendet, bei denen Groß- und Kleinbuchstaben für Vergleiche als ungleich gelten, z. B. stimmen "FABRIKAM" und "Fabrikam" nicht überein. ADSI akzeptiert alle Inhalte für eine druckbare Zeichenfolge; es versucht nicht zu überprüfen, ob sie tatsächlich druckbar sind.
Numerische Zeichenfolge
Syntax Type: ADSTYPE_NUMERIC_STRING
In dieser Syntax stimmen Zeichenfolgen wie in Druckbare Zeichenfolge überein, mit der Ausnahme, dass alle Leerzeichen in Vergleichen ignoriert werden. ADSI führt keine Wertüberprüfung durch, um sicherzustellen, dass nur Zahlen und Leerzeichen in Werten dieser Syntax angezeigt werden. Active Directory akzeptiert alle Inhalte für eine numerische Zeichenfolge. Es wird nicht überprüft, ob die Zeichen numerisch sind.
UTC-Zeit
Syntax Type: ADSTYPE_UTC_TIME
Mit dieser Syntax werden Datum und Uhrzeit in einer einzelnen Zeichenfolge gespeichert. Das Zeichenfolgenformat besteht aus drei verketteten Teilen: (1) JJJJMMD; (2) HHMM oder HHMMSS (beide sind akzeptabel); und (3) "Z", um anzugeben, dass die angegebene Zeit Greenwich Mean Time (GMT) ist, oder "+/-HHMM", um anzugeben, dass die angegebene Zeit Ortszeit mit der angegebenen Differenz von GMT ist. Das Differenzial basiert auf der Formel: GMT=Local+differential.
Hinweis
Die ersten beiden Ziffern des Jahres werden nicht in dieser Zeichenfolge gespeichert.
Beispiele für Rechtswerte sind "9101311455Z", "910131145503Z", "9101314455-0500", "910131145503+0130". Diese Zeichenfolge wird als ASCII-Zeichen mit Einem Byte gespeichert, und es wird keine Codepagenummer damit gespeichert.
Obwohl die Reihenfolge unterstützt wird, erfolgt sie nur als ASCII-Zeichenfolgensortierung ohne Beachtung der Groß-/Kleinschreibung, nicht durch ordnungsgemäße Interpretation der Bedeutung der Zeichenfolgen.
Jeder gültige Zeichenfolgenwert wird akzeptiert. Es wird nicht versucht, sicherzustellen, dass die Zeichenfolge eine gültige Zeitzeichenfolge enthält.
Generalisierte Zeit
Syntax Type: ADSTYPE_UTC_TIME
Wenn ein neues Attribut zum Speichern von Zeitwerten definiert wird, sollte die GeneralizedTime-Syntax verwendet werden. Die GeneralizedTime-Syntax verwendet vier Zeichen, um das Jahr darzustellen, statt wie bei UTCTime zwei Zeichen.
Das Format für die GeneralizedTime-Syntax ist "JJJJMMDHHMMSS.0Z". Ein Beispiel für einen akzeptablen Wert ist "20010928060000.0Z". Das "Z" gibt kein Zeitdifferenzial an. Active Directory speichert Datum/Uhrzeit als Greenwich Mean Time (GMT). Wenn kein Zeitdifferenzial angegeben wird, ist GMT der Standardwert.
Wenn die Zeit in einer anderen Zeitzone als GMT angegeben wird, wird die Differenz zwischen Zeitzone und GMT an die Zeichenfolge anstelle von "Z" in der Form "JJJJMMDDHMMSS.0[+/-]HHMM" angefügt. Ein Beispiel für einen zulässigen Wert ist "20010928060000.0+0200".
Das Differenzial basiert auf der Formel: GMT=Local+differential.
Boolean
Syntax Type: ADSTYPE_BOOLEAN
Active Directory akzeptiert nur einen signierten 32-Bit-Wert für diese Syntax. Es verarbeitet null als FALSE und alle nichtzero-Werte als TRUE.
Integer
Syntax Type: ADSTYPE_INTEGER
Ein numerischer Wert mit 32-Bit-Vorzeichen.
Große ganze Zahl
Syntax Type: ADSTYPE_LARGE_INTEGER
Ein numerischer Wert mit 64-Bit-Vorzeichen. Große ganze Zahlen werden tatsächlich als COM-Objekte auf der IADsLargeInteger-Schnittstelle implementiert. Die Methoden HighPart und LowPart werden verwendet, um auf die beiden 32-Bit-Hälften des großen ganzzahligen Werts zuzugreifen.
Beispiel:
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
Oktettzeichenfolge
Syntax Type: ADSTYPE_OCTET_STRING
Eine Oktettzeichenfolge wird als Variantenarray von Bytes zurückgegeben. Dies besteht aus einer Größenanzahl (Anzahl der Oktette) gefolgt von einer Reihe von Oktetten. Ein Oktett ist ein 8-Bit-Byte, sodass eine Reihe von Oktetten eine Zeichenfolge von Binärdaten ist.
Objektklasse
Syntax Type: ADSTYPE_CASE_IGNORE_STRING
Object Class ist ein eindeutiger Objektbezeichner für eine bestimmte Schemaklasse. Die Klasse jedes Objekts instance wird durch das objectClass-Attribut identifiziert. Bei der Erstellung können Sie eine Objektklasse nie ändern. objectClass ist ein attribut mit mehreren Werten. Sie listet die spezifische Klasse des -Objekts und die Klassen aller strukturellen oder abstrakten Klassen auf, von denen die spezifische Klasse abgeleitet wurde. Dazu gehört Top, die Klasse, von der letztendlich alle anderen Klassen abgeleitet werden. Active Directory listet keine Hilfsklassen im objectClass-Attribut auf.
Sicherheitsbeschreibung
Syntax Type: ADSTYPE_NT_SECURITY_DESCRIPTOR
Die Zugriffsrechte definieren, welche Fähigkeiten ein Sicherheitsprinzipal besitzt, wenn er versucht, einen Vorgang für ein Active Directory-Objekt auszuführen. Ein Sicherheitsdeskriptor beschreibt die Zugriffssteuerungsinformationen, die einem Objekt zugeordnet sind.
Der Sicherheitsdeskriptor wird als Eigenschaft eines Verzeichnisobjekts in der nTSecurityDescriptor-Eigenschaft gespeichert. Wenn ein authentifizierter Benutzer versucht, auf ein Verzeichnisobjekt zuzugreifen, bestimmt der Verzeichnisserver den Zugriff, der dem Benutzer gewährt oder verweigert wird, basierend auf der Objektsicherheitsdeskriptor.
Die ADS_SD_CONTROL_ENUM-Enumeration gibt Steuerelementflags für einen Sicherheitsdeskriptor an.
Das folgende Codebeispiel zeigt, wie Sie eine Sicherheitsbeschreibung abrufen.
' 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
Zugehörige Themen