快速用户切换

当用户登录到计算机时,系统会加载其配置文件。 由于每个用户都有唯一的用户帐户,因此这允许多个用户共用一台计算机。 用户登录时,会看到其自己的桌面设置、文件、收藏夹和历史记录;其他用户无法访问。 当用户退出登录时,其配置文件会保留,以供其下次登录时使用。 在早期操作系统中,用户必须先退出登录,然后其他用户才能登录。 从 Windows XP 开始,用户无需退出登录即可允许其他用户登录。 相反,多个用户可以登录并在其开放帐户之间快速切换。 此功能称为“快速用户切换”。 切换到另一个帐户不会更改用户当前正在运行的应用程序的状态。 例如,假设一个用户允许另一个用户在保持第一个用户的登录状态的情况下切换到其帐户。 当第一个用户切换回其帐户时,其应用程序正在运行并保留其网络连接。 因此,这两个用户看起来在同时使用计算机。

如果应用程序符合 Windows 2000 徽标要求,则它们应该可以在 Windows XP 和更高版本的操作系统上支持快速用户切换。 但是,在开发应用程序时,请务必记住这种情况,使其行为符合用户的预期。 编写应用程序时,请使用以下准则:

  • 实现真正的配置文件分离。 系统提供一个底层基础结构,支持分离用户数据、用户设置和计算机设置。 例如,使用用户的 Documents 文件夹存储用户创建的数据。 若要查找特定于应用程序的数据的目录,请使用带有 FOLDERID_RoamingAppData已知文件夹系统,或者对于较旧的操作系统,使用带有 CSIDL_APPDATACSIDL 系统。 对于不应向其他计算机上的用户提供的数据(例如临时文件),请使用 FOLDERID_LocalAppData 或 CSIDL_LOCAL_APPDATA
  • 注册接收用户切换通知。 通常情况下,发生切换时不需要通知应用程序。 但是,如果应用程序必须收到会话更改的通知,则可以注册接收 WM_WTSSESSION_CHANGE 消息。
  • 请注意应用程序的其他实例。 例如,有时应用程序必须从 Internet 下载更新。 如果另一个用户同时在另一个会话中运行应用程序实例,则更新可能会失败。 即使更新成功,更新也可能导致其他正在运行的应用程序实例以不可预测的方式运行。 因此,最好仅在没有任何其他应用程序实例运行时才执行动态升级。 在下载应用程序更新之前,可能需要实现一种方法来指示所有正在运行的应用程序实例保存数据并干净退出。