Freigeben über


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:

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

Boolean

Enumeration

Int32

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.

Int64

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

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.