Partilhar via


Registrando uma classe na instalação

Se uma classe se destina a estar disponível para clientes a qualquer momento, como a maioria dos aplicativos, você geralmente a registra através de um programa de instalação e configuração. Isso significa colocar informações sobre o aplicativo no registro, incluindo como e onde seus objetos devem ser instanciados. Estas informações devem ser registadas para todos os CLSID. Outras informações são opcionais. Ferramentas como Regsvr32 simplificam a escrita de um programa de instalação que registra servidores na instalação.

Se não estiver a utilizar os padrões do sistema, há duas chaves importantes no registo: o CLSID e o AppID. Entre as informações importantes sob essas chaves está como o objeto deve ser instanciado. Os objetos podem ser designados como em processo, fora do processo local ou fora do processo remoto.

Sob a chave AppID estão vários valores que definem informações específicas para esse aplicativo. Entre eles estão RemoteServerName e ActivateAtStorage , que podem ser usados para permitir que um cliente crie um objeto, com o cliente não tendo conhecimento interno do local do servidor. (Para obter mais informações sobre instanciação remota, consulte Localizando um objeto remoto e funções auxiliares de criação de instância.)

Um servidor também pode ser instalado como um serviço ou para ser executado em uma conta de usuário específica. Para obter mais informações, consulte Instalando como um aplicativo de serviço.

Um servidor ou um objeto ROT que não seja um serviço ou que não esteja a funcionar sob uma conta de utilizador específica pode ser nomeado como servidor "ativado como ativador". Para esses servidores, o contexto de segurança e a estação de janela/área de trabalho do cliente devem corresponder aos do servidor. Um cliente que tenta se conectar a um servidor remoto é considerado como tendo um NULL window station/desktop, portanto, apenas o contexto de segurança do servidor é comparado nesta instância. (Para obter mais informações sobre SIDs, consulte Segurança no COM.) COM armazena em cache a estação de janela/área de trabalho de um processo quando o processo se conecta pela primeira vez ao serviço COM distribuído. Portanto, os clientes e servidores COM não devem alterar as suas estações de janela ou os ambientes de trabalho dos threads do processo depois de chamar CoInitialize ou CoInitializeEx.

Quando uma classe é registrada como em processo, uma chamada para CoGetClassObject para criar seu objeto de classe é automaticamente passada por COM para a funçãoDllGetClassObject, que a classe deve implementar para dar ao objeto chamador um ponteiro para seu objeto de classe.

As classes implementadas em executáveis podem especificar que o COM deve executar o seu processo e aguardar que o processo registe a interface de IClassFactory do objeto de classe através de uma chamada à função CoRegisterClassObject.

chaves de registo COM

Instalar como Aplicação de Serviço

Registrando um servidor EXE em execução

Registrando componentes

Registo de objetos no ROT

Autoregisto