Registrar el objeto COM del menú contextual en un especificador de visualización

Cuando se usa COM para crear un archivo DLL de extensión de menú contextual para un servicio de directorio de Active Directory, la extensión debe estar registrada en el Registro de Windows y Servicios de dominio de Active Directory para notificar a los complementos MMC administrativos de Active Directory y al shell de Windows de la extensión.

Registro en el Registro de Windows

Al igual que todos los servidores COM, se debe registrar una extensión de menú contextual en el Registro. La extensión se registra en la siguiente clave.

HKEY_CLASSES_ROOT
   CLSID
      <clsid>

<clsid> es la representación de cadena del CLSID como se genera mediante la función StringFromCLSID . En la <clave clsid> , hay una clave InProcServer32 que identifica el objeto como un servidor in-proc de 32 bits. En la clave InProcServer32 , la ubicación del archivo DLL se especifica en el valor predeterminado y el modelo de subprocesos se especifica en el valor threadingModel . Toda la extensión de menú contextual debe usar el modelo de subprocesos "Apartment".

Registro con Servicios de dominio de Active Directory

El registro de la extensión del menú contextual es específico de una configuración regional. Si la extensión de menú contextual se aplica a todas las configuraciones regionales, debe registrarse en el objeto displaySpecifier de la clase de objeto en todos los subcontenedores de configuración regional del contenedor De especificadores de visualización. Si la extensión de menú contextual se localiza para una configuración regional determinada, debe registrarse en el objeto displaySpecifier en el subcontenedador de esa configuración regional. Para obtener más información sobre el contenedor y las configuraciones regionales de los especificadores de pantalla, vea Display Specifiers and DisplaySpecifiers Container.

Hay dos atributos de especificador de visualización en los que se puede registrar un elemento de extensión de menú contextual. Estos son adminContextMenu y shellContextMenu.

El atributo adminContextMenu identifica los menús contextuales administrativos que se muestran en complementos administrativos de Active Directory. El menú contextual aparece cuando el usuario muestra el menú contextual de los objetos de la clase adecuada en uno de los complementos MMC administrativos de Active Directory.

El atributo shellContextMenu identifica los menús contextuales del usuario final que se van a mostrar en el shell de Windows. El menú contextual aparece cuando el usuario ve el menú contextual de los objetos de la clase adecuada en el Explorador de Windows. A partir de Windows Server 2003, el shell de Windows ya no muestra objetos de Servicios de dominio de Active Directory.

Todos estos atributos tienen varios valores.

Al registrar una extensión de menú contextual, los valores de los atributos adminContextMenu y shellContextMenu requieren el siguiente formato.

<order number>,<clsid>

El "<número> de pedido" es un número sin signo que representa la posición del elemento en el menú contextual. Cuando se muestra un menú contextual, los valores se ordenan mediante una comparación del "<número> de pedido" de cada valor. Si más de un valor tiene el mismo "<número> de pedido", esas extensiones de menú contextual se cargan en el orden en que se leen desde el servidor de Active Directory. Si es posible, use un "número> de pedido" no< existente, es decir, uno que no haya sido utilizado por otros valores de la propiedad . No se permite ninguna posición inicial y se permiten huecos en la secuencia de "<número> de pedido".

El "<clsid>" es la representación de cadena del CLSID como genera la función StringFromCLSID .

En el shell de Windows, se admiten elementos de menú contextual de selección múltiple. En este caso, se invoca la extensión de menú contextual para cada objeto seleccionado. En los complementos administrativos de Active Directory, también se admiten elementos de extensión de menú contextual de selección múltiple. En este caso, la estructura DSOBJECTNAMES contendrá una estructura DSOBJECT para cada objeto de directorio seleccionado.

Importante

Para el shell de Windows, la información del especificador de visualización se recupera en el inicio de sesión de usuario y se almacena en caché para la sesión del usuario. Para los complementos administrativos, los datos del especificador de visualización se recuperan cuando se carga el complemento y se almacenan en caché durante el proceso. Para el shell de Windows, esto significa que los cambios en los especificadores de visualización surten efecto después de que un usuario cierre la sesión y vuelva a activarse. Para los complementos administrativos, los cambios surten efecto cuando se vuelve a cargar el archivo de consola o complemento, es decir, si inicia una nueva instancia del archivo de consola o la nueva instancia de Mmc.exe y agrega el complemento, se recuperan los datos del especificador de visualización más recientes.

 

Para obtener más información y un ejemplo de código sobre cómo implementar una extensión de menú contextual, vea Código de ejemplo para la implementación del objeto COM del menú contextual.