Регистрация запущенного EXE-сервера

Когда запускается исполняемый сервер (EXE), он должен вызывать CoRegisterClassObject, который регистрирует CLSID для сервера в том, что называется таблицей классов (таблица, отличной от запущенной таблицы объектов). Если сервер зарегистрирован в таблице классов, он позволяет диспетчеру управления службами (SCM) определить, что не нужно запускать класс снова, так как сервер уже запущен. Только если сервер не указан в таблице классов, SCM проверка реестр для соответствующих значений и запустить сервер, связанный с заданным CLSID.

Передайте CoRegisterClassObject CLSID для класса и указатель на его интерфейс IUnknown. Клиенты, которые впоследствии вызывают CoGetClassObject с этим CLSID, получат указатель на запрошенный интерфейс, если безопасность не запрещает ее. (См. раздел Вспомогательные функции создания экземпляров для описания нескольких функций создания экземпляра и активации.)

Сервер для объекта класса должен вызвать CoRevokeClassObject , чтобы отозвать объект класса (удалить его регистрацию), если все из следующих значений имеют значение true:

  • Существующие экземпляры определения объекта отсутствуют.
  • На объекте класса нет блокировок.
  • Приложение, предоставляющее службы объекту класса, не находится под контролем пользователя (не отображается пользователю на экране).

Установка в качестве приложения-службы

Регистрация класса во время установки

Регистрация объектов в ROT

Самостоятельная регистрация