オブジェクト クラスとオブジェクト カテゴリ
オブジェクト クラスの各インスタンスには、オブジェクトがインスタンスであるクラスを識別する複数値 objectClass プロパティと、そのクラスが派生するすべての構造または抽象スーパークラスがあります。 したがって、ユーザー オブジェクトの objectClass プロパティは、上位クラス、person クラス、organizationalPerson クラス、およびユーザー クラスを識別します。 objectClass プロパティには、一覧に補助クラスは含まれません。 オブジェクト インスタンスの作成時に objectClass 値が設定され、変更できません。
オブジェクト クラスの各インスタンスには objectCategory プロパティもあります。これは、オブジェクトがインスタンスであるクラスまたはそのスーパークラスの 1 つの識別名を含む単一値プロパティです。 オブジェクトが作成されると、システムは objectCategory プロパティを、そのオブジェクト クラスの defaultObjectCategory プロパティで指定された値に設定します。 オブジェクトの objectCategory プロパティは変更できません。
詳細およびオブジェクトの objectClass プロパティを取得するコード例については、「objectClass 属性の取得」を参照してください。
重要
Windows Server 2008 より前では 、objectClass 属性のインデックスは作成されません。 これは、複数の値を持ち、一意ではないからです。つまり、objectClass 属性のすべてのインスタンスに最上位クラスが含まれます。 つまり、インデックスは非常に大きく、効果がありません。 特定のクラスのオブジェクトを検索するには、objectCategory 属性を使用します。この属性は単一値でインデックスが付けられます。 検索フィルターでこれらのプロパティを使用する方法の詳細については、「検索対象の決定」を参照してください。
ほとんどのクラスでは、defaultObjectCategory はクラスの classSchema オブジェクトの識別名です。 たとえば、organizationUnit クラスの defaultObjectCategory は "CN=Organizational-Unit,CN=Schema,CN=Configuration,DC<=forestroot" です。> ただし、一部のクラスは別のクラスを defaultObjectCategory と参照します。 これにより、異なるクラスの場合でも、クエリで関連オブジェクトのグループを簡単に見つけることができます。 たとえば、ユーザー、個人、組織のユーザー、連絡先のクラスはすべて、defaultObjectCategory プロパティの person クラスを識別します。 これにより、(objectCategory=person) などの検索フィルターで、これらすべてのクラスのインスタンスを 1 つのクエリで検索できます。 ユーザーのクエリは非常に一般的であるため、これは単純な最適化です。
構造クラスからサブクラスを作成する場合は、新しいクラスの defaultObjectCategory 値をスーパークラスの同じ識別名に設定することをお勧めします。 これにより、標準 UI でサブクラスを "検索" できます。