註冊執行中的 EXE 伺服器

啟動可執行檔 (EXE) 伺服器時,它應該呼叫 CoRegisterClassObject,這會在所謂的類別數據表中註冊伺服器的 CLSID(與執行中對象數據表不同的數據表)。 在類別數據表中註冊伺服器時,它可讓服務控制管理員 (SCM) 判斷不需要再次啟動類別,因為伺服器已在執行中。 只有在類別表中未列出伺服器時,SCM 才會檢查登錄中是否有適當的值,並啟動與指定 CLSID 相關聯的伺服器。

您可以傳遞 CoRegisterClassObject 類別的 CLSID,以及其 IUnknown 介面的指標。 後續使用此 CLSID 呼叫 CoGetClassObject 的用戶端會擷取其要求介面的指標,只要安全性不禁止它。 (請參閱 實例建立協助程式函 式,說明數個實例建立和啟用函式。

當下列所有專案都成立時,類別對象的伺服器應該呼叫 CoRevokeClassObject 來撤銷類別物件(移除其註冊):

  • 物件定義沒有現有的實例。
  • 類別對象上沒有鎖定。
  • 提供服務給類別物件的應用程式不在使用者控制之下(顯示的使用者看不到)。

安裝即服務應用程式

在安裝時註冊類別

在 ROT 中註冊物件

自我註冊