Eigenschaftentypen
Es gibt mehrere Typen von Eigenschaften, die mit Verzeichnisobjekten verwendet werden. Im Schema der Active Directory-Domänendienste werden die Eigenschaftentypen Attributsyntaxen genannt. Weitere Informationen zu Attributsyntaxen und eine Liste der Attributsyntaxen, die in den Active Directory-Domänendiensten verwendet werden können, finden Sie im Thema "Syntaxes for Active Directory Attributes" in der MSDN Library unter https://go.microsoft.com/fwlink/?LinkID=27252.
Die folgenden Themen enthalten Codebeispiele, die das Lesen und Ausgeben von Eigenschaftentypen mit System.DirectoryServices veranschaulichen:
- Boolean-Eigenschaftentyp
- DateTime-Eigenschaft
- DNWithBinary-Eigenschaftentyp
- LargeInteger-Eigenschaftentyp
- String(Octet)/String(SID)-Eigenschaftentyp
- String(NT-Sec_Desc)-Eigenschaftentyp
- String-Eigenschaftentyp
Interpretierte Datentypen
Es gibt zwei verschiedene Möglichkeiten, um Eigenschaftenwerte aus dem System.DirectoryServices-Namespace abzurufen. Die erste Möglichkeit ist die Verwendung der Member der Properties-Eigenschaft. Die andere Möglichkeit ist die Verwendung der Member der ResultPropertyValueCollection-Auflistung, die mit der DirectorySearcher-Klasse abgerufen werden. Bei beiden Möglichkeiten werden generische Objekte zurückgegeben, deren Datentyp vom Schemadatentyp der Eigenschaft abhängt. Die Properties-Eigenschaft gibt denselben Objekttyp zurück wie die IADs.GetInfoEx-Methode. Weitere Informationen zur IADs.GetInfoEx-Methode finden Sie im Thema "IADs.GetInfoEx" in der MSDN Library unter https://go.microsoft.com/fwlink/?LinkID=27252. Die Item-Eigenschaft übersetzt einige Datentypen in .NET Framework-Datentypen. Die folgende Tabelle zeigt die Schematypen der Active Directory-Domänendienste sowie die zugehörigen interpretierten und nicht interpretierten Datentypen. Weitere Informationen zu Schematypen der Active Directory-Domänendienste oder COM-Schnittstellennamen, die in der folgenden Tabelle aufgeführt sind, finden Sie im Thema zum jeweiligen Typ oder COM-Schnittstellennamen in der MSDN Library unter https://go.microsoft.com/fwlink/?LinkID=27252.
Schematyp der Active Directory-Domänendienste | Nicht interpretierter Typ (Rückgabe durch Properties) | Interpretierter Typ (Rückgabe durch ResultPropertyValueCollection) |
---|---|---|
Boolean |
Boolean |
|
Enumeration |
Int32 |
|
Enumeration(Delivery-Mechanism) |
Int32 |
Int32 |
Enumeration(Export-Information-Level) |
Int32 |
Int32 |
Enumeration(Preferred-Delivery-Method) |
Int32 |
Int32 |
Integer |
Int32 |
Int32 |
Interval |
Ein COM-Objekt, das in IADsLargeInteger umgewandelt werden kann. |
|
LargeInteger |
Ein COM-Objekt, das in IADsLargeInteger umgewandelt werden kann. |
Int64 |
Object(Access-Point) |
Nicht unterstützt |
Nicht unterstützt |
Object(DN-Binary) |
Ein COM-Objekt, das in IADsDNWithBinary umgewandelt werden kann. |
Ein String-Objekt, das den definierten Namen und binäre Daten in dem Format enthält, das durch Object(DN-Binary) festgelegt wurde. |
Object(DN-String) |
Ein COM-Objekt, das in IADsDNWithString umgewandelt werden kann. |
Ein String-Objekt, das den definierten Namen und Zeichenfolgedaten in dem Format enthält, das durch Object(DN-String) festgelegt wurde. |
Object(DS-DN) |
String |
String |
Object(OR-Name) |
Ein COM-Objekt, das in IADsDNWithBinary umgewandelt werden kann. |
Ein String-Objekt, das den definierten Namen und binäre Daten in dem Format enthält, das durch Object(DN-Binary) festgelegt wurde. |
Object(Presentation-Address) |
String |
String |
Object(Replica-Link) |
Byte[] |
Byte[] |
String(Generalized-Time) |
DateTime |
|
String(IA5) |
String |
String |
String(NT-Sec-Desc) |
Ein COM-Objekt, das in IADsSecurityDescriptor umgewandelt werden kann. |
Byte[] |
String(Numeric) |
String |
String |
String(Object-Identifier) |
String |
String |
String(Octet) |
Byte[] |
Byte[] |
String(Printable) |
String |
String |
String(Sid) |
Byte[] |
Byte[] |
String(Teletex) |
String |
String |
String(Unicode) |
String |
String |
String(UTC-Time) |
DateTime |
DateTime |
Interpretieren der Werte von ADSI-Objekteigenschaften
Bei einigen Syntaxtypen der Active Directory-Domänendienste, z. B. LargeInteger, gibt System.DirectoryServices den Eigenschaftenwert als COM-Objekt zurück. Dieses COM-Objekt muss in den entsprechenden ADSI-Typ umgewandelt werden, um den tatsächlichen Eigenschaftentyp zu erhalten. Die lastLogon-Eigenschaft gehört beispielsweise zur Interval-Syntax. System.DirectoryServices gibt den Eigenschaftenwert für eine Interval-Syntax als COM-Objekt zurück, das die IADsLargeInteger-Schnittstelle unterstützt. Weitere Informationen zu diesen Elementen finden Sie in den Themen "LargeInteger", "Interval", "IADsLargeInteger" und "lastLogon" in der MSDN Library unter https://go.microsoft.com/fwlink/?LinkID=27252.
Im folgenden C#-Beispiel wird veranschaulicht, wie die IADsLargeInteger-Schnittstelle durch Umwandeln des COM-Objekts in ein ActiveDs.IADsLargeInteger-Objekt aus dem COM-Objekts abgerufen wird. Wenn Sie eine Anwendung entwickeln, die Objekte im ActiveDS-Namespace verwendet, müssen Sie beim Kompilieren und Linken der Anwendung auf die ActiveDS-Typbibliothek, activeds.tlb, verweisen.
object obj = entry.Properties["lastLogon"];
ActiveDs.IADsLargeInteger largeIntADSI;
largeIntADSI = (ActiveDs.IADsLargeInteger)obj;
Die folgende Tabelle enthält eine Liste der Syntaxtypen, die System.DirectoryServices als COM-Objekte zurückgibt, sowie zu zugehörigen ADSI-Schnittstellen der einzelnen Syntaxtypen. Weitere Informationen zu den Syntaxtypen oder ASDI-Schnittstellen, die in der folgenden Tabelle aufgeführt sind, finden Sie jeweils im Thema zum Syntaxtyp oder zur ADSI-Schnittstelle in der MSDN Library unter https://go.microsoft.com/fwlink/?LinkID=27252.
Syntaxtype | ADSI-Schnittstelle |
---|---|
Interval |
IADsLargeInteger |
LargeInteger |
IADsLargeInteger |
Object(DN-Binary) |
IADsDNWithBinary |
Object(DN-String) |
IADsDNWithString |
Object(OR-Name) |
IADsDNWithBinary |
String(NT-Sec-Desc) |
IADsSecurityDescriptor |
Im folgenden C#-Beispiel wird veranschaulicht, wie die entsprechende Schnittstelle für ein ASDI COM-Objekt abgerufen wird. In diesem Beispiel wird die InvalidCastException-Ausnahme verwendet, um die Gültigkeit der Umwandlung zu ermitteln.
static string GetADSIComObjectValue(object obj)
{
if(obj.GetType().Name.Equals("__ComObject"))
{
/*
Try IADsSecurityDescriptor. This is returned for the following AD
syntax type:
String(NT-Sec-Desc)
*/
try
{
ActiveDs.IADsSecurityDescriptor secDesc;
secDesc = (ActiveDs.IADsSecurityDescriptor)obj;
return "IADsSecurityDescriptor:" + secDesc.Owner.ToString();
}
catch (System.InvalidCastException)
{
}
/*
Try IADsLargeInteger. This is returned for the following AD syntax
types:
Interval
LargeInteger
*/
try
{
ActiveDs.IADsLargeInteger largeIntADSI;
largeIntADSI = (ActiveDs.IADsLargeInteger)obj;
Int64 largeInt = largeIntADSI.HighPart * 0x100000000;
largeInt += largeIntADSI.LowPart;
return "IADsLargeInteger:" + largeInt.ToString();
}
catch (System.InvalidCastException)
{
}
/*
Try IADsDNWithBinary. This is returned for the following AD syntax
types:
Object(DN-Binary)
Object(OR-Name)
*/
try
{
ActiveDs.IADsDNWithBinary dnWithBinary;
dnWithBinary = (ActiveDs.IADsDNWithBinary)obj;
return "IADsDNWithBinary:" +
dnWithBinary.DNString + ":" +
dnWithBinary.BinaryValue.ToString();
}
catch (System.InvalidCastException)
{
}
/*
Try IADsDNWithString. This is returned for the following AD syntax
type:
Object(DN-String)
*/
try
{
ActiveDs.IADsDNWithString dnWithString;
dnWithString = (ActiveDs.IADsDNWithString)obj;
return "IADsDNWithString:" +
dnWithString.DNString + ":" +
dnWithString.StringValue;
}
catch (System.InvalidCastException)
{
}
throw new System.ArgumentException("Unknown COM Object type.");
}
else
{
throw new System.ArgumentException("Object is not a COM Object.");
}
}
Siehe auch
Referenz
System.DirectoryServices
DirectoryEntry
ResultPropertyValueCollection
DirectorySearcher
Konzepte
Verzeichnisobjekteigenschaften
Send comments about this topic to Microsoft.
Copyright © 2007 Microsoft Corporation. Alle Rechte vorbehalten.