Поделиться через


Регистрация com-объекта контекстного меню в описателье отображения

При использовании COM для создания библиотеки DLL расширения контекстного меню для службы каталогов Active Directory расширение необходимо зарегистрировать в реестре Windows и службах домен Active Directory, чтобы уведомить оснастки MMC администрирования Active Directory и оболочку Windows расширения.

Регистрация в реестре Windows

Как и все COM-серверы, расширение контекстного меню должно быть зарегистрировано в реестре. Расширение зарегистрировано в следующем ключе.

HKEY_CLASSES_ROOT
   CLSID
      <clsid>

<clsid — это строковое представление CLSID, созданное функцией StringFromCLSID.> <В разделе ключа clsid> есть ключ InProcServer32, определяющий объект как 32-разрядный сервер в proc. В разделе ключа InProcServer32 расположение библиотеки DLL указывается в значении по умолчанию, а модель потоков указывается в значении ThreadingModel. Все расширения контекстного меню должны использовать модель потоков "Квартира".

Регистрация в службах домен Active Directory

Регистрация расширения контекстного меню зависит от одного языкового стандарта. Если расширение контекстного меню применяется ко всем языковым стандартам, оно должно быть зарегистрировано в объекте displaySpecifier во всех подконтейнерах языкового стандарта в контейнере описателей отображения. Если расширение контекстного меню локализовано для определенного языкового стандарта, оно должно быть зарегистрировано в объекте displaySpecifier в подконтейнере языкового стандарта. Дополнительные сведения о контейнере и языковых стандартах описателей отображения см. в разделе "Описатели отображения" и "Контейнер displaySpecifiers".

Существует два атрибута описателя отображения, в которых можно зарегистрировать элемент расширения контекстного меню. Это adminContextMenu и shellContextMenu.

Атрибут adminContextMenu определяет контекстные меню администратора для отображения в оснастки администрирования Active Directory. Контекстное меню отображается, когда пользователь отображает контекстное меню для объектов соответствующего класса в одном из оснастки MMC администрирования Active Directory.

Атрибут shellContextMenu определяет контекстные меню конечных пользователей для отображения в оболочке Windows. Контекстное меню отображается, когда пользователь просматривает контекстное меню для объектов соответствующего класса в Windows Обозреватель. Начиная с Windows Server 2003 оболочка Windows больше не отображает объекты служб домен Active Directory.

Все эти атрибуты являются многозначными.

При регистрации расширения контекстного меню значения атрибутов adminContextMenu и shellContextMenu требуют следующего формата.

<order number>,<clsid>

"<Порядковый номер" — это неподписанный номер>, представляющий позицию элемента в контекстном меню. При отображении контекстного меню значения сортируются по сравнению< с "номером> заказа". Если несколько значений имеют одинаковый "<номер> заказа", эти расширения контекстного меню загружаются в том порядке, в который они считываются с сервера Active Directory. Если это возможно, используйте не существующий "<номер> заказа", то есть тот, который не использовался другими значениями в свойстве. В последовательности "<порядковый номер>" отсутствуют предписанные начальные позиции и пробелы.

Clsid — это строковое представление CLSID, созданное функцией StringFromCLSID.><

В оболочке Windows поддерживаются элементы контекстного меню с несколькими выборами. В этом случае для каждого выбранного объекта вызывается расширение контекстного меню. В оснастках администрирования Active Directory также поддерживаются элементы расширения контекстного меню с несколькими выборами. В этом случае структура DSOBJECTNAMES будет содержать структуру DSOBJECT для каждого выбранного объекта каталога.

Важно!

Для оболочки Windows сведения описатель отображения извлекается при входе пользователя и кэшируется для сеанса пользователя. Для административных оснастки данные описателя отображения извлекаются при загрузке оснастки и кэшируются в течение длительности процесса. Для оболочки Windows это означает, что изменения для отображения описателей вступили в силу после того, как пользователь выключает и снова возвращается. Для административных оснастки изменения вступают в силу при перезагрузке оснастки или консольного файла, т. е. при запуске нового экземпляра файла консоли или нового экземпляра Mmc.exe и добавлении оснастки, извлекаются последние данные описателя отображения.

 

Дополнительные сведения и пример реализации расширения контекстного меню см . в примере кода реализации com-объекта контекстного меню.