共用方式為


安裝即服務應用程式

除了以本機伺服器可執行檔 (EXE) 執行之外,COM 物件也可以封裝本身,以在本機或遠端用戶端啟用時以服務應用程式的形式執行。 服務支援許多實用且整合在使用者介面中的管理功能,包括本機和遠端啟動、停止、暫停和重新啟動,以及伺服器能夠在特定使用者帳戶視窗工作站下執行的能力。

設計為服務的物件會安裝以供 COM 使用。這是透過在其 AppID 機碼下建立 LocalService 值,並執行標準服務安裝來實現的。

當遠端用戶端啟用時,類別也可以設定為在特定用戶帳戶下執行,而不會寫入為服務應用程式。 若要這樣做,類別會安裝使用者名稱和密碼,以在 SCM 啟動其本機伺服器進程時使用。

以這種方式設定類別時,除非 COM 代表實際的啟用要求啟動程式,否則呼叫 CoRegisterClassObject 將會失敗。 換句話說,設定為以特定使用者身分執行的類別可能不會在任何其他身分識別下註冊。

用戶名稱取自類別 APPID 索引鍵中的 RunAs 命名值。 如果使用者名稱為「Interactive User」,則類別代碼會在目前登入使用者的安全性環境中執行,並連接到互動式工作視窗。

否則,密碼會從登錄的隱藏部分擷取,而只能供計算機系統管理員和系統使用。 接著,會使用使用者名稱和密碼來建立執行類別程式碼的登入會話。 以這種方式啟動時,類別程式代碼會以自己的桌面和視窗月臺執行,而且不會與互動式使用者或其他在使用者帳戶中執行的類別共用視窗句柄、剪貼簿或其他使用者介面元素。

使用 LocalServiceRun As 註冊的伺服器,可以在執行中的對象數據表中註冊物件,以允許任何用戶端連線到它。 若要這樣做,伺服器的呼叫 IRunningObjectTable::Register 必須設定ROTFLAGS_ALLOWANYCLIENT旗標。 伺服器設定此位元的執行檔名稱必須在登錄的 AppID 區段中,這個區段會參考該執行檔的 AppID。 「啟動為啟動器」伺服器(未註冊為 LocalServiceRunAs),可能不會使用此旗標註冊物件。

在安裝 註冊類別

註冊執行中的 EXE 伺服器

在 ROT 中註冊物件

自我註冊