天天看點

編寫在 Windows XP 中支援快速使用者切換的應用程式

快速使用者切換是 Windows XP 的一個功能,允許多個使用者共享同一台計算機。 每個使用者有自己的配置檔案(和桌面),而且您可以在不登出的情況下在使用者之間進行切換。 您編寫的應用程式若要支援快速使用者切換,必須確定在使用者會話切換時不損壞或丢失資料。

若要支援快速使用者切換,您的應用程式必須将使用者和應用程式資料存儲在有效的位置。

此外,如果您的應用程式提供的功能在多個使用者同時運作時發生故障(例如,因為該程式以不安全的方式使用全局資源),您必須為應用程式添加代碼以檢測該情形并作出相應的反應。

如果應用程式的另一個執行個體影響到可選(非首要)功能,應用程式啟動時必須:

  • 檢測是否有使用者正在運作該應用程式。
  • 阻止所有有問題的功能。
  • 通知目前使用者無法使用特定功能的原因。

如果應用程式的另一個執行個體影響首要功能,同樣,您的應用程式必須:

  • 檢測是否有使用者正在運作該應用程式。
  • 向目前使用者報告錯誤情況,然後退出。

最後,如果您的應用程式需要知道何時要在活動使用者會話中運作以及何時發生了會話切換,那麼該應用程式可以進行注冊以接收會話通知消息。 例如,一個監視裝置是否連接配接到串行端口的應用程式需要在結束活動使用者會話運作狀态時釋放端口,而在其再次進入活動會話狀态時重新獲得該端口。 此外,在非活動使用者會話狀态下運作應用程式時挂起背景處理,可以節省系統資源。

本文其他部分指導您如何使您的應用程式支援快速使用者切換。

編寫在 Windows XP 中支援快速使用者切換的應用程式

回到頂端

要求

  • 如果您的應用程式在 Windows XP 或 Windows 2000 中運作,您隻能命名使用全局命名空間的 mutex 和 semaphore 對象。早期版本的 Windows 不支援全局命名空間,而且如果試圖使用包含反斜杠字元 ("/") 的核心對象名稱将發生錯誤。
  • 如果您的應用程式是針對 Windows XP 或 Windows 2000 及其他版本的 Windows 設計的,則必須包含版本檢查代碼,并且在相應的作業系統中隻能使用全局 mutex 名稱。
  • 如果您在開發一項服務,請確定服務提供的使用者互動發生在目前使用者上。 不可假定會話 0 就是目前桌面會話,因為在 Windows XP 中,活動會話可以有任意的會話序号。 使用 WTSGetActiveConsoleSessionID 辨別活動會話。
編寫在 Windows XP 中支援快速使用者切換的應用程式

回到頂端

這篇文章中的資訊适用于:
  • Microsoft Windows XP Professional Edition
  • Microsoft Visual C++ .NET 2002 标準版
  • Microsoft Visual C++ 6.1
編寫在 Windows XP 中支援快速使用者切換的應用程式

回到頂端

關鍵字: 
kbhowto kbhowtomaster KB310153
編寫在 Windows XP 中支援快速使用者切換的應用程式

回到頂端 Microsoft和/或其各供應商對于為任何目的而在本伺服器上釋出的檔案及有關圖形所含資訊的适用性,不作任何聲明。 所有該等檔案及有關圖形均"依樣"提供,而不帶任何性質的保證。Microsoft和/或其各供應商特此聲明,對所有與該等資訊有關的保證和條件不負任何責任,該等保證和條件包括關于适銷性、符合特定用途、所有權和非侵權的所有默示保證和條件。在任何情況下,在由于使用或運作本伺服器上的資訊所引起的或與該等使用或運作有關的訴訟中,Microsoft和/或其各供應商就因喪失使用、資料或利潤所導緻的任何特别的、間接的、衍生性的損害或任何因使用而喪失所導緻的之損害、資料或利潤不負任何責任。 轉自 http://support.microsoft.com/kb/310153/zh-cn

繼續閱讀