次の方法で共有


プロパティの型

ディレクトリ オブジェクトで使用されるプロパティにはいくつかの型があります。Active Directory ドメイン サービス スキーマでは、これらのプロパティの型は属性構文と呼ばれます。属性構文の詳細と Active Directory ドメイン サービスで使用できる属性構文の一覧については、MSDN ライブラリ (https://go.microsoft.com/fwlink/?LinkID=27252) で Active Directory 属性の構文に関するページを参照してください。

次の各トピックには、System.DirectoryServices を使用してプロパティの型を読み取る方法および書き込む方法を示すコード例があります。

解釈されるデータ型

System.DirectoryServices 名前空間からプロパティ値を取得するには 2 とおりの方法があります。1 つは、Properties プロパティのメンバを使用する方法です。もう 1 つは、DirectorySearcher クラスで取得される ResultPropertyValueCollection コレクションのメンバを使用する方法です。これらはそれぞれ、実際のデータ型がプロパティのスキーマ データ型に依存する汎用オブジェクトを返します。Properties プロパティは、IADs.GetInfoEx メソッドと同じオブジェクトの種類を返します。IADs.GetInfoEx メソッドの詳細については、MSDN ライブラリ (https://go.microsoft.com/fwlink/?LinkID=27252) で IADs::GetInfoEx に関するページを参照してください。Item プロパティは、一部のデータ型を .NET Framework データ型に変換します。Active Directory ドメイン サービス スキーマ型とそれらに関連付けられた解釈されるデータ型および解釈されないデータ型を、次の表に示します。次の表に示されている Active Directory ドメイン サービス スキーマ型または COM インターフェイス名の詳細については、MSDN ライブラリ (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 ライブラリ (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 ライブラリ (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.