编写在 Windows XP 中支持快速用户切换的应用程序

快速用户切换是 Windows XP 的一个功能,允许多个用户共享同一台计算机。 每个用户有自己的配置文件(和桌面),而且您可以在不注销的情况下在用户之间进行切换。 您编写的应用程序若要支持快速用户切换,必须确保在用户会话切换时不损坏或丢失数据。

若要支持快速用户切换,您的应用程序必须将用户和应用程序数据存储在有效的位置。

此外,如果您的应用程序提供的功能在多个用户同时运行时发生故障(例如,因为该程序以不安全的方式使用全局资源),您必须为应用程序添加代码以检测该情形并作出相应的反应。

如果应用程序的另一个实例影响到可选(非首要)功能,应用程序启动时必须:
  • 检测是否有用户正在运行该应用程序。
  • 阻止所有有问题的功能。
  • 通知当前用户无法使用特定功能的原因。
如果应用程序的另一个实例影响首要功能,同样,您的应用程序必须:
  • 检测是否有用户正在运行该应用程序。
  • 向当前用户报告错误情况,然后退出。
最后,如果您的应用程序需要知道何时要在活动用户会话中运行以及何时发生了会话切换,那么该应用程序可以进行注册以接收会话通知消息。 例如,一个监视设备是否连接到串行端口的应用程序需要在结束活动用户会话运行状态时释放端口,而在其再次进入活动会话状态时重新获得该端口。 此外,在非活动用户会话状态下运行应用程序时挂起后台处理,可以节省系统资源。

本文其他部分指导您如何使您的应用程序支持快速用户切换。


要求

  • 如果您的应用程序在 Windows XP 或 Windows 2000 中运行,您只能命名使用全局命名空间的 mutex 和 semaphore 对象。早期版本的 Windows 不支持全局命名空间,而且如果试图使用包含反斜杠字符 ("/") 的内核对象名称将发生错误。
  • 如果您的应用程序是针对 Windows XP 或 Windows 2000 及其他版本的 Windows 设计的,则必须包含版本检查代码,并且在相应的操作系统中只能使用全局 mutex 名称。
  • 如果您在开发一项服务,请确保服务提供的用户交互发生在当前用户上。 不可假定会话 0 就是当前桌面会话,因为在 Windows XP 中,活动会话可以有任意的会话序号。 使用 WTSGetActiveConsoleSessionID 标识活动会话。

这篇文章中的信息适用于:
  • Microsoft Windows XP Professional Edition
  • Microsoft Visual C++ .NET 2002 标准版
  • Microsoft Visual C++ 6.1
关键字: 
kbhowto kbhowtomaster KB310153
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值