Share via


在安裝時註冊類別

如果類別隨時可供用戶端使用,就如同大部分應用程式一樣,您通常會透過安裝和安裝程序進行註冊。 這表示將應用程式的相關信息放入登錄中,包括要具現化其物件的方式和位置。 此信息必須註冊所有 CLSID。 其他資訊是選擇性的。 Regsvr32 之類的工具可讓您輕鬆地撰寫安裝程式,以在安裝時註冊伺服器。

如果您不依賴系統預設值,登錄中有兩個重要的機碼:CLSID 和 AppID。 在這些索引鍵下的重要資訊片段中,是物件如何具現化。 物件可以指定為同進程、跨進程本機或跨進程遠端。

在 AppID 索引鍵下,有數個值可定義該應用程式特有的資訊。 其中包括 RemoteServerNameActivateAt 儲存體,這兩者都可以用來允許用戶端建立物件,而客戶端沒有伺服器位置的內建知識。 (如需遠端具現化的詳細資訊,請參閱 尋找遠端物件實體建立協助程式函式。)

伺服器也可以安裝為服務,或在特定用戶帳戶下執行。 如需詳細資訊,請參閱 安裝即服務應用程式

不是服務或在特定用戶帳戶下執行的伺服器或 ROT 物件,可稱為「啟動為啟動器」伺服器。 針對這些伺服器,用戶端的安全性內容和視窗月臺/桌面必須符合伺服器的 。 嘗試連線到遠端伺服器的用戶端會被視為具有 NULL 視窗月臺/桌面,因此在此實例中只會比較伺服器安全性內容。 (如需有關 SID 的詳細資訊,請參閱 COM 中的安全性。當進程第一次連接到分散式 COM 服務時,COM 會快取進程的視窗月臺/桌面。 因此,呼叫 CoInitialize 或 CoInitializeEx 之後,COM 用戶端和伺服器不應該變更其視窗月臺或進程線程桌面。

當類別註冊為同進程時,COM 會自動將CoGetClassObject建立其類別物件的呼叫傳遞至 DllGetClassObject 函式,而該函式必須實作該函式,讓呼叫物件為其類別物件的指標。

在可執行檔中實作的類別可以指定 COM 應該執行其進程,並等候進程透過呼叫 CoRegisterClassObject 函式來註冊其類別物件的 IClassFactory 介面。

COM 登錄機碼

安裝即服務應用程式

註冊執行中的 EXE 伺服器

註冊元件

在 ROT 中註冊物件

自我註冊