如何捕获注销在windows server 2003
How to capture logoff cancelled in windows server 2003
我正在开发一个基于windows 2003的终端服务系统。它由一个桌面替代应用程序组成,用户可以从中启动程序。它还有一个注销按钮。当用户注销时,必须做两件事。首先,他被注销了。然后调用一个存储过程来清理用户数据库状态。这几乎可以正常工作,但对于一种情况,即当用户取消注销事件时。典型场景:1-用户登录,启动MS Word,编辑文档,不保存。2 -用户然后按下注销按钮。MS Word对此作出反应,要求用户保存更改。4 -用户按"取消"键。
此时,桌面应用程序可能已经调用了存储过程来清理数据库状态。如何在桌面应用程序中捕获此行为?是否有消息说结束会话操作被取消?我的问题有意义吗?
哦,所有的应用程序都是用Delphi 7编写的,但我也用C, c++和c#工作,所以用这些语言的答案也很受欢迎。
如果您的用户状态逻辑在您的shell替换中,那么请考虑重新设计应用程序:将自定义shell与会话管理分离。
示例:移动服务中的User状态逻辑。在RDS通知的服务注册表中:WTS_SESSION_LOGON/WTS_SESSION_LOGOFF。
我认为WTS_SESSION_LOGOFF只有在实际下线发生时才会发送,即如果用户在Word中单击取消按钮,那么Windows将知道用户实际上没有下线,并且操作系统不会发送WTS_SESSION_LOGOFF(这是未经测试的,但听起来合乎逻辑)。
这样你就不用处理WM_ENDSESSION/WM_QUERYENDSESSION之类的东西了。
最近我写了一些关于RDS通知主题的指导
相关文章:
- VisualStudio:使用 Suse Enterprise Server 12 SP5 时,不会下载远程库标头
- 如何在 Windows 2016 Server 版本 1607 中访问 SetThreadDescription()
- 使用 SQLConfig数据源创建 SQL Server DSN 失败:关键字-值对无效
- 如何将QTime保存在SQL Server Express表中并读回?
- 我需要安装什么才能获得在Windows Server 2012 R2 Standard上运行C++hello world
- boost beast Websocket Multi Request Server/Client 并不是真正的 mul
- Gstreamer:rtsp-server中的trickplay模式
- 无法从 SQL Server 检索数据
- 如何在将Visual Studio C++控制台应用程序连接到Microsoft SQL Server时修复"
- 以C++为目标的Windows Server Core
- SQL Server-未找到数据源名称,也未指定默认驱动程序
- 在Windows Server 2003中注册dll时出现问题
- 如何使用Windows Server 2003及更高版本上的虚拟磁盘服务(VDS)登录ISCSI目标
- 确定 Windows Server 2003 SP 1 是 32 位还是 64 位的正确方法是什么?
- ADO 连接创建实例在 Windows Server 2003 上失败
- Visual Studio 2013 中的 Windows XP 和 Windows Server 2003 支持
- 为什么WinDbg无法通过Service Pack 2 x86零售符号下载从Windows Server 2003加载符
- GetTokenInformation在windows server 2003上失败(错误998),但在2008上工作
- 如何捕获注销在windows server 2003
- 使用FindWindowEx的程序在Server 2003上停止工作,为什么