Short:如何在服务中识别当前是否显示而不是显示活动桌面(即已锁定还是未登录)?如何识别电脑当前是否已锁定或未登录?
长:我试图构建一个由数据库,服务和WPF应用程序组成的Win 7-10解决方案。在DB中设置标志时,服务会向用户发送自定义消息 - 无论是否已登录。
如果有人登录,服务将启动应用程序,该应用程序显示消息以及重新启动/日志关闭选项。 这工作正常 - 迄今如此好。
如果屏幕锁定或没有用户登录,则问题是在锁定屏幕上显示一条消息。我可以使用“msg.exe *消息”显示消息,但我不希望这两个消息。 exe和应用程序启动,如果用户是登录。因此,我需要能够确定哪个可执行文件是适当的,当标志从DB读取。
要清楚:我对事件解雇不感兴趣。我有兴趣在特定的时间阅读“当前状态”。
注意:已经有很多类似于这个问题的问题,但我一直没能找到一个完全覆盖我的困境。大部分都与锁定事件有关,或者不能在服务中工作/没有用户登录。
我曾经有过一些工作,我不得不从服务启动桌面上的应用程序。为此,我必须在系统托盘中创建一个图标才能获得对桌面的权限。也许如果你设置了一个系统尝试图标应用程序在启动时运行,你可以与它沟通,以确定是否有人登录它(我认为这是一个单一登录情况)。 – juharr
这是一个单一的迹象,是的。我大概可以确定是否有人以这种方式签名,但它不会告诉我他们是否被锁定。作为可能的部分解决方案,我会牢记它,但我真的不希望在服务之上添加一个始终运行的应用程序。我希望尽可能保持简单,因为稳定性和占地面积小是关键。它将在10-30k电脑上运行,并将为用户提供关键信息。 – Nathan
如果控制台会话在锁定时显示为“断开连接”,则可以枚举所有终端服务会话并检查它们是否都处于断开连接状态。我不知道它是否确实如此。 –