如何捕获注销在windows server 2003

本文关键字:server 2003 windows 何捕获 注销 | 更新日期: 2023-09-27 18:10:45

我正在开发一个基于windows 2003的终端服务系统。它由一个桌面替代应用程序组成,用户可以从中启动程序。它还有一个注销按钮。当用户注销时,必须做两件事。首先,他被注销了。然后调用一个存储过程来清理用户数据库状态。这几乎可以正常工作,但对于一种情况,即当用户取消注销事件时。典型场景:1-用户登录,启动MS Word,编辑文档,不保存。2 -用户然后按下注销按钮。MS Word对此作出反应,要求用户保存更改。4 -用户按"取消"键。

此时,桌面应用程序可能已经调用了存储过程来清理数据库状态。如何在桌面应用程序中捕获此行为?是否有消息说结束会话操作被取消?

我的问题有意义吗?

哦,所有的应用程序都是用Delphi 7编写的,但我也用C, c++和c#工作,所以用这些语言的答案也很受欢迎。

如何捕获注销在windows server 2003

如果您的用户状态逻辑在您的shell替换中,那么请考虑重新设计应用程序:将自定义shell与会话管理分离。

示例:移动服务中的User状态逻辑。在RDS通知的服务注册表中:WTS_SESSION_LOGON/WTS_SESSION_LOGOFF。

我认为WTS_SESSION_LOGOFF只有在实际下线发生时才会发送,即如果用户在Word中单击取消按钮,那么Windows将知道用户实际上没有下线,并且操作系统不会发送WTS_SESSION_LOGOFF(这是未经测试的,但听起来合乎逻辑)。

这样你就不用处理WM_ENDSESSION/WM_QUERYENDSESSION之类的东西了。

最近我写了一些关于RDS通知主题的指导