表示指定子にコンテキスト メニュー COM オブジェクトを登録する
COM を使用して Active Directory ディレクトリ サービスのコンテキスト メニュー拡張機能 DLL を作成する場合は、拡張機能を Windows レジストリと Active Directory ドメイン Services に登録して、Active Directory 管理 MMC スナップインと拡張機能の Windows シェルに通知する必要があります。
Windows レジストリへの登録
すべての COM サーバーと同様に、コンテキスト メニュー拡張機能をレジストリに登録する必要があります。 拡張機能は、次のキーで登録されます。
HKEY_CLASSES_ROOT
CLSID
<clsid>
<clsid> は、StringFromCLSID 関数によって生成される CLSID の文字列表現です。 clsid キーの<下には、オブジェクトを 32 ビットの in-proc サーバーとして識別する InProcServer32 キーがあります。> InProcServer32 キーでは、DLL の場所は既定値で指定され、スレッド モデルは ThreadingModel 値で指定されます。 すべてのコンテキスト メニュー拡張機能では、"アパートメント" スレッド モデルを使用する必要があります。
Active Directory ドメイン サービスへの登録
コンテキスト メニュー拡張機能の登録は、1 つのロケールに固有です。 コンテキスト メニュー拡張機能がすべてのロケールに適用される場合は、Display Specifiers コンテナー内のすべてのロケール サブコンテナーのオブジェクト クラス displaySpecifier オブジェクトに登録する必要があります。 コンテキスト メニュー拡張機能が特定のロケール用にローカライズされている場合は、そのロケールのサブコンテナーの displaySpecifier オブジェクトに登録する必要があります。 表示指定子コンテナーとロケールの詳細については、「表示指定子と DisplaySpecifiers コンテナー」を参照してください。
コンテキスト メニュー拡張項目を登録できる表示指定子属性は 2 つあります。 これらは adminContextMenu と shellContextMenu です。
adminContextMenu 属性は、Active Directory 管理スナップインに表示する管理コンテキスト メニューを識別します。ユーザーが Active Directory 管理 MMC スナップインのいずれかで適切なクラスのオブジェクトのコンテキスト メニューを表示すると、コンテキスト メニューが表示されます。
shellContextMenu 属性は、Windows シェルに表示するエンドユーザーコンテキスト メニューを識別します。 ユーザーが Windows エクスプローラーの適切なクラスのオブジェクトのコンテキスト メニューを表示すると、コンテキスト メニューが表示されます。 Windows Server 2003 以降、Windows シェルには Active Directory ドメイン Services のオブジェクトが表示されなくなります。
これらの属性はすべて複数値です。
コンテキスト メニュー拡張機能を登録する場合、adminContextMenu 属性と shellContextMenu 属性の値には次の形式が必要です。
<order number>,<clsid>
"<order number>" は、コンテキスト メニュー内の項目の位置を表す符号なし番号です。 コンテキスト メニューが表示されると、各値の "<順序番号>" の比較を使用して値が並べ替えられます。 複数の値に同じ "<注文番号>" がある場合、これらのコンテキスト メニュー拡張機能は、Active Directory サーバーから読み取られた順序で読み込まれます。 可能な場合は、プロパティ内の他の値で使用されていない既存の "<順序番号>" を使用します。 所定の開始位置がなく、"<注文番号>" シーケンスでギャップが許容されます。
"clsid>" は、StringFromCLSID 関数によって生成される CLSID の文字列表現です。<
Windows シェルでは、複数選択コンテキスト メニュー項目がサポートされています。 この場合、選択したオブジェクトごとにコンテキスト メニュー拡張機能が呼び出されます。 Active Directory 管理スナップインでは、複数選択コンテキスト メニュー拡張項目もサポートされます。 この場合、DSOBJECTNAMES 構造体には、選択した各ディレクトリ オブジェクトの DSOBJECT 構造体が含まれます。
重要
Windows シェルの場合、表示指定子情報はユーザー ログオン時に取得され、ユーザーのセッション用にキャッシュされます。 管理スナップインの場合、表示指定子データは、スナップインが読み込まれるときに取得され、プロセスの期間中キャッシュされます。 Windows シェルの場合、ユーザーがログオフしてから再度ログオンした後に、表示指定子の変更が有効になります。 管理スナップインの場合、スナップインまたはコンソール ファイルが再読み込みされたときに変更が有効になります。つまり、コンソール ファイルまたは新しいMmc.exe インスタンスの新しいインスタンスを起動してスナップインを追加すると、最新の表示指定子データが取得されます。
詳細およびコンテキスト メニュー拡張機能を実装する方法のコード例については、「コンテキスト メニュー COM オブジェクトの実装のコード例」を参照してください。