Share via


Registrar una clase en la instalación

Si una clase está pensada para estar disponible para los clientes en cualquier momento, ya que la mayoría de las aplicaciones son, normalmente se registra a través de un programa de instalación y instalación. Esto significa poner información sobre la aplicación en el registro, incluido cómo y dónde se van a crear instancias de sus objetos. Esta información debe estar registrada para todos los CLSID. Otra información es opcional. Las herramientas como Regsvr32 facilitan la escritura de un programa de instalación que registra servidores en la instalación.

Si no se basa en los valores predeterminados del sistema, hay dos claves importantes en el Registro: CLSID y AppID. Entre las partes importantes de la información bajo estas claves se muestra cómo se va a crear una instancia del objeto. Los objetos se pueden designar como locales fuera de proceso o remotos fuera de proceso.

En la clave AppID hay varios valores que definen información específica de esa aplicación. Entre ellos se encuentran RemoteServerName y ActivateAtStorage, ambos se pueden usar para permitir que un cliente cree un objeto, con el cliente sin conocimientos integrados de la ubicación del servidor. (Para obtener más información sobre la creación de instancias remotas, vea Buscar un objeto remoto y funciones auxiliares de creación de instancias).

Un servidor también se puede instalar como un servicio o ejecutarse en una cuenta de usuario específica. Para obtener más información, consulte Instalación como una aplicación de servicio.

Un servidor o objeto ROT que no es un servicio o que se ejecuta en una cuenta de usuario específica se puede denominar servidor "activar como activador". Para estos servidores, el contexto de seguridad y la estación o escritorio de la ventana del cliente deben coincidir con el del servidor. Un cliente que intenta conectarse a un servidor remoto se considera que tiene una estación o escritorio de ventana NULL , por lo que solo se compara el contexto de seguridad del servidor en esta instancia. (Para obtener más información sobre los SID, consulte Seguridad en COM). COM almacena en caché la estación de ventana o el escritorio de un proceso cuando el proceso se conecta por primera vez al servicio COM distribuido. Por lo tanto, los clientes y servidores COM no deben cambiar sus escritorios de subprocesos o estaciones de ventanas del proceso después de llamar a CoInitialize o CoInitializeEx.

Cuando una clase se registra como en proceso, una llamada a CoGetClassObject para crear su objeto de clase se pasa automáticamente por COM a la función DllGetClassObject , que la clase debe implementar para dar al objeto que realiza la llamada un puntero a su objeto de clase.

Las clases implementadas en ejecutables pueden especificar que COM debe ejecutar su proceso y esperar a que el proceso registre la interfaz IClassFactory de su objeto de clase a través de una llamada a la función CoRegisterClassObject .

Claves del Registro COM

Instalación de una aplicación de servicio

Registrar un servidor EXE en ejecución

Registro de componentes

Registro de objetos en rot

Autoregistro