다음을 통해 공유


속성 형식

디렉터리 개체에 사용되는 여러 가지 형식의 속성이 있습니다. Active Directory 도메인 서비스 스키마에서는 이러한 속성 형식을 특성 구문이라고 합니다. Active Directory 도메인 서비스에서 사용할 수 있는 특성 구문 목록 및 특성 구문에 대한 자세한 내용은 MSDN Library(https://go.microsoft.com/fwlink/?LinkID=27252)의 "Syntaxes for Active Directory Attributes" 항목을 참조하십시오.

다음 항목에서는 System.DirectoryServices를 사용하여 속성 형식을 읽고 쓰는 방법을 보여 주는 코드 예제를 제공합니다.

해석된 데이터 형식

System.DirectoryServices 네임스페이스의 속성 값을 검색할 수 있는 방법이 두 가지 있습니다. 첫 번째는 Properties 속성의 멤버를 사용하는 것입니다. 다른 방법은 DirectorySearcher 클래스를 사용하여 가져오는 ResultPropertyValueCollection 컬렉션의 멤버를 사용하는 것입니다. 각 방법은 실제 데이터 형식이 속성의 스키마 데이터 형식에 따라 다른 일반 개체를 반환합니다. Properties 속성은 IADs.GetInfoEx 메서드와 같은 개체 형식을 반환합니다. IADs.GetInfoEx 메서드에 대한 자세한 내용은 MSDN Library(https://go.microsoft.com/fwlink/?LinkID=27252)의 "IADs::GetInfoEx" 항목을 참조하십시오. Item 속성은 일부 데이터 형식을 .NET Framework 데이터 형식으로 변환합니다. 다음 표에서는 Active Directory 도메인 서비스 스키마 형식 및 이와 관련된 해석된 데이터 형식과 해석되지 않은 데이터 형식을 보여 줍니다. 다음 표에 나열된 Active Directory 도메인 서비스 스키마 형식 또는 COM 인터페이스 이름에 대한 자세한 내용은 MSDN Library(https://go.microsoft.com/fwlink/?LinkID=27252)의 특정 형식이나 COM 인터페이스 이름에 대한 항목을 참조하십시오.

Active Directory 도메인 서비스 스키마 형식 해석되지 않은 형식(Properties에서 반환) 해석된 형식(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

IADsLargeInteger로 캐스팅할 수 있는 COM 개체입니다.

Int64

LargeInteger

IADsLargeInteger로 캐스팅할 수 있는 COM 개체입니다.

Int64

Object(Access-Point)

지원 안 함

지원 안 함

Object(DN-Binary)

IADsDNWithBinary로 캐스팅할 수 있는 COM 개체입니다.

Object(DN-Binary)에서 지정한 형식의 고유 이름 및 이진 데이터를 포함하는 String입니다.

Object(DN-String)

IADsDNWithString으로 캐스팅할 수 있는 COM 개체입니다.

Object(DN-String)에서 지정된 형식의 고유 이름 및 문자열 데이터를 포함하는 String입니다.

Object(DS-DN)

String

String

Object(OR-Name)

IADsDNWithBinary로 캐스팅할 수 있는 COM 개체입니다.

Object(DN-Binary)에서 지정한 형식의 고유 이름 및 이진 데이터를 포함하는 String입니다.

Object(Presentation-Address)

String

String

Object(Replica-Link)

Byte[]

Byte[]

String(Generalized-Time)

DateTime

DateTime

String(IA5)

String

String

String(NT-Sec-Desc)

IADsSecurityDescriptor로 캐스팅할 수 있는 COM 개체입니다.

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

ADSI 개체 속성 값 해석

LargeInteger와 같은 일부 Active Directory 도메인 서비스 구문 형식의 경우 System.DirectoryServices는 속성 값을 COM 개체로 반환합니다. 이 COM 개체는 실제 속성 형식을 가져올 수 있도록 적절한 ADSI 형식으로 캐스팅해야 합니다. 예를 들어, lastLogon 속성은 Interval 구문에 속합니다. System.DirectoryServices는 Interval 구문의 속성 값을 IADsLargeInteger 인터페이스를 지원하는 COM 개체로 반환합니다. 이러한 요소에 대한 자세한 내용은 MSDN Library(https://go.microsoft.com/fwlink/?LinkID=27252)의 "LargeInteger" 항목, "Interval" 항목, "IADsLargeInteger" 항목 및 "lastLogon" 항목을 참조하십시오.

다음 C# 예제에서는 COM 개체를 ActiveDs.IADsLargeInteger 개체로 캐스팅하여 COM 개체에서 IADsLargeInteger 인터페이스를 가져오는 방법을 보여 줍니다. ActiveDS 네임스페이스에서 개체를 사용하는 응용 프로그램을 개발하는 경우 응용 프로그램을 컴파일하고 연결할 때 ActiveDS 형식 라이브러리(activeds.tlb)를 참조하십시오.

object obj = entry.Properties["lastLogon"];
ActiveDs.IADsLargeInteger largeIntADSI;
largeIntADSI = (ActiveDs.IADsLargeInteger)obj;

다음 표에서는 System.DirectoryServices가 각 구문 형식의 COM 개체 및 관련된 ADSI 인터페이스로 반환하는 구문 형식을 보여 줍니다. 다음 표에 나열된 구문 형식 또는 ADSI 인터페이스에 대한 자세한 내용은 MSDN Library(https://go.microsoft.com/fwlink/?LinkID=27252)의 특정 구문 형식 또는 ADSI 인터페이스에 대한 항목을 참조하십시오.

구문 형식 ADSI 인터페이스

Interval

IADsLargeInteger

LargeInteger

IADsLargeInteger

Object(DN-Binary)

IADsDNWithBinary

Object(DN-String)

IADsDNWithString

Object(OR-Name)

IADsDNWithBinary

String(NT-Sec-Desc)

IADsSecurityDescriptor

다음 C# 예제에서는 ADSI COM 개체에 대한 적절한 인터페이스를 가져오는 방법을 보여 줍니다. 이 예제에서는 캐스트가 유효한지 여부를 확인할 수 있도록 InvalidCastException 예외를 사용합니다.

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.");
    }
}

참고 항목

참조

System.DirectoryServices
DirectoryEntry
ResultPropertyValueCollection
DirectorySearcher

개념

디렉터리 개체 속성

Send comments about this topic to Microsoft.

Copyright © 2007 by Microsoft Corporation. All rights reserved.