Регистрация 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-объекта контекстного меню.