會話對會話啟用與會話 Moniker
會話對會話啟用 (也稱為跨會話啟用) 可讓用戶端進程在指定的會話上啟動 (啟用) 本機伺服器進程。 這項功能適用于設定為在互動式使用者的安全性內容中執行的應用程式,也稱為「RunAs 互動式使用者」物件啟用模式。 如需安全性內容的詳細資訊,請參閱 用戶端的安全性內容。
分散式 COM (DCOM) 會使用系統提供的 會話 Moniker,以每個會話為基礎啟用物件啟用。 其他系統提供的 Monikers 包括檔案 Monikers、 專案 Monikers、泛型 複合 Monikers、 反 Monikers、 指標 Monikers和 URL Monikers。
若要能夠使用會話 Moniker,必須將 DCOM 應用程式設定為以互動式使用者身分執行。 This can be set by using the Component Services Administrative tool, viewing the Properties of the DCOM application, and selecting The interactive user on the Identity tab. For more information about the possible security risks associated with setting a DCOM application to run as the interactive user in a Remote Desktop Services environment, see the "Application Identity (COM)" section of the COM documentation in the Platform Software Development Kit (SDK).
如果選取任何其他類型的使用者來執行應用程式,應用程式將會忽略會話 Moniker。 COM+ 伺服器應用程式也會忽略會話 Moniker。 如需選取要執行應用程式之使用者類型之其他方法的詳細資訊,請參閱平臺 SDK 中的 COM 檔。
若要建立會話 Moniker,您必須使用指定進程伺服器類別識別碼的 Moniker 類別來撰寫遠端桌面服務的會話識別碼。
建立會話 Moniker
使用下列語法,在類別 Moniker 的顯示名稱前面加上會話 Moniker 的顯示名稱:
"Session:[digits]!clsid:[class id]"
其中 ,數位 代表將啟動伺服器進程之會話的會話識別碼,其中 類別識別碼 代表伺服器的類別識別碼。 請注意,會話識別碼是 base-10 數位。
對於執行 Windows XP 或更新版本的電腦,使用下列語法會導致 COM 將啟用傳送至目前作用中的實體主控台會話,不論其會話識別碼為何:
"Session:Console!clsid:[class id]"
建立會話 Moniker 之後,您可以將結果傳遞至 MkParseDisplayName 函式或 MkParseDisplayNameEx 函式。
您可以使用與使用任何其他 Moniker 相同的方式來使用會話 Moniker。
如需示範如何在指定的會話上啟用本機伺服器進程的程式碼範例,請參閱 使用會話 Moniker。
如需物件啟用、系統提供的 Monikers 和類別 Monikers 的詳細資訊,請參閱平臺 SDK 中的 COM 檔。
注意
跨會話建立的進程具有環境區塊大小上限。 此限制大約為 4 KB,但視建立程式所需的其他 (資訊而定,此限制大約為 4 KB,例如檔案名、目錄和新進程的參數) 。