otherWellKnownObjectsプロパティを使用した名前変更が安全なバインドの有効化

ContainerクラスのオブジェクトにはotherWellKnownObjects属性があり、この属性を使用して、コンテナー内の子オブジェクトの識別名 (DN) にGUIDを関連付けることができます。 子オブジェクトが移動または名前変更されると、Active Directoryサーバーはその子オブジェクトのotherWellKnownObjects値のDNを更新します。 これにより、WKGUIDバインド機能を使用して、子オブジェクトのDNではなく、コンテナーのGUIDとDNを使用して子オブジェクトにバインドできます。

otherWellKnownObjects属性はwellKnownObjects属性と同じですが、アプリケーションとサービスはotherWellKnownObjects値を書き込むことができますが、wellKnownObjectsを書き込むことができるのはシステムだけである点が異なります。

otherWellKnownObjects属性とWKGUIDバインドを使用すると、特定のコンテナーオブジェクトに関連して名前変更セーフなバインドが必要な次の状況で役立ちます。

コンテナーオブジェクトに他の重要なオブジェクトが含まれている場合、または重要なオブジェクトを名前変更または移動できる場合。

コンテナーオブジェクトのインスタンスごとに重要なオブジェクトが存在する場合。 たとえば、システムは各domainDNSオブジェクトのwellKnownObjects属性を使用して、domainDNSオブジェクトのすべてのインスタンスに存在するUsersコンテナーの値を格納します。 これにより、アプリケーションは、domainDNSコンテナーの既知のGUIDとDNを指定することで、名前変更が安全な方法でUsersコンテナーにバインドできます。 アプリケーションでは、コンテナーのotherWellKnownObjects属性を同様に使用できます。

重要なオブジェクトに対して名前変更が安全なバインドや検索機能が必要な場合。

名前変更が安全なバインドと検索機能を追加するには

  1. 重要なオブジェクトがコンテナー内に作成されるときに、コンテナーオブジェクトのotherWellKnownObjectsプロパティに値を追加します。 この値には、既知のオブジェクトを表すGUIDが含まれています。 これは、そのオブジェクトのobjectGUIDdistinguishedNameではないことに注意してください。
  2. WKGUIDバインド機能を使用して、重要なオブジェクトにバインドまたは検索します。

otherWellKnownObjects属性には複数の値を指定でき、設定されているコンテナー内の既知のオブジェクトのGUID/DNタプルが含まれています。 otherWellKnownObjects属性にはDNWithBinary構文があり、値の形式は次のとおりです。

B:<char count>:<well known GUID>:<object DN>

この例では、"<char count>"は"<既知のGUID>"の十六進数字の数であり、otherWellKnownObjectswellKnownObjectsの両方で32 (GUID内の十六進数字の数) です。"。 "<既知のGUID>"は、既知のGUIDの十六進数字表現です。"。 "<オブジェクトDN>"は、このWKO値によって表されるオブジェクトの識別名です。 サーバーは、値が作成されたときに最初に指定されたオブジェクトの現在の識別名が含まれるように、各wellKnownObjects値とotherWellKnownObjects値のObjectDN部分を保持します。

たとえば、{df447b5e-aa5b-11d2-8d53-00c04f79ab81}がFabrikam.comドメイン内のMyContainerコンテナー内のMyObjectオブジェクトの既知のGUIDである場合、otherWellKnownObjects値は既知のGUIDとMyObjectのDNを指定します。

B:32:df447b5eaa5b11d28d5300c04f79ab81:cn=MyObject,cn=MyContainer,dc=Fabrikam,dc=com

このオブジェクトにバインドするには、オブジェクトの既知のGUIDとコンテナーのDNを指定する次のWKGUIDバインド文字列を使用します。

LDAP://<WKGUID=df447b5eaa5b11d28d5300c04f79ab81,cn=MyContainer,dc=Fabrikam,dc=com>

このオブジェクトにバインドした後、ADSI COMインターフェイスを使用して、オブジェクトの検索、読み取り、変更、または削除を行うことができます。

オブジェクトをotherWellKnownObjects属性に追加する方法を示すコード例の詳細については、 「コンテナーオブジェクトを作成するためのコード例」 を参照してください。