在我的Windows服务中,我试图在交互式用户login到系统时执行一些特定的操作。 为此,我跟踪WTS_SESSION_LOGON
通知。 不幸的是,今天我发现这个通知来自竞争条件。
例如,如果用户帐户configuration了密码,系统启动后,我的服务启动,当用户input密码时,我的服务可以接收WTS_SESSION_LOGON
并处理它。
只有一个用户帐户没有密码时,会发生此问题。 启动后,系统自动login该用户,但我的服务可能稍后启动,因此它不会收到交互式用户login的任何通知。
任何想法,如果有办法解决这个问题? 或者至less告诉用户会话会自动login?
PS。 WTS_CONSOLE_CONNECT
通知发生同样的竞争情况。
当您的服务启动时,可以使用WTSEnumerateSessions()
来查找哪些会话已经存在,以及在HandlerEx
回调中处理后续的WTS_SESSION_CHANGE
通知之前,它们的当前状态是什么(连接,活动/登录等)。