核心物件命名空間

遠端桌面服務伺服器具有下列具名核心物件的多個命名空間:事件、旗號、mutex、可等候的計時器、檔案對應物件和工作物件。 用戶端/伺服器應用程式中的服務主要使用全域命名空間。 此外,每個用戶端會話都有這些物件的個別命名空間,例如在 Windows Vista 中。

不同的用戶端會話命名空間可讓多個用戶端執行相同的應用程式,而不會彼此干擾。 針對在用戶端會話下啟動的進程,系統預設會使用會話命名空間。 不過,這些進程可以使用全域命名空間,方法是在物件名稱前面加上 「Global\」 前置詞。 例如,下列程式碼會呼叫 CreateEvent ,並在全域命名空間中建立名為 CSAPP 的事件物件:

注意

全域命名空間不適用於 Windows 市集應用程式。

 

CreateEvent( NULL, FALSE, FALSE, "Global\\CSAPP" );

遠端桌面服務環境中的服務應用程式預設會使用全域命名空間。

會話零僅用於裝載服務,而且與舊版 Windows 不同,沒有主控台會話。

全域命名空間可讓多個用戶端會話上的進程與服務應用程式通訊。 例如,用戶端/伺服器應用程式可能會使用 mutex 物件進行同步處理。 伺服器模組可以在全域命名空間中建立 mutex 物件。 然後,用戶端會話可以使用 「Global\」 前置詞來開啟 mutex 物件。

全域命名空間的另一個用法是針對使用具名物件的應用程式,偵測所有會話中已經有在系統中執行的應用程式實例。 這個具名物件必須在全域命名空間中建立或開啟,而不是個別會話命名空間。 預設支援每個會話執行應用程式一次的常見案例,因為每個會話命名空間中會建立具名物件。

除了 「Global\」 前置詞之外,用戶端進程也可以使用 「Local\」 前置詞在其會話命名空間中明確建立物件。 這些關鍵字區分大小寫。

「Session\」 前置詞是保留供系統使用,您不應該在核心物件的名稱中使用。

使用遠端桌面服務會話實作快速使用者切換。 第一個登入的使用者使用第一個會話、下一個登入的使用者會使用會話二等等。 核心物件名稱必須遵循遠端桌面服務概述的指導方針,讓應用程式可以支援多個使用者。

從會話零以外的會話,使用 CreateFileMapping在全域命名空間中建立檔案對應物件是特殊許可權作業。 因此,在任意遠端桌面工作階段主機中執行的應用程式 (RD 工作階段主機) 伺服器會話必須啟用 SeCreateGlobalPrivilege ,才能成功在全域命名空間中建立檔案對應物件。 許可權檢查僅限於建立檔案對應物件,不適用於開啟現有的物件。 例如,如果服務或系統建立檔案對應物件,則任何會話中執行的任何進程都可以存取該檔案對應物件,前提是使用者具有必要的存取權。