我正在编写一个Windows服务应用程序,它根据在网络上另一台计算机上运行的不同应用程序的指示来侦听连接并执行某些任务.
其中一项任务确保当前没有用户登录,锁定工作站,删除一些文件,然后重新启动系统.我考虑使用此解决方案查看正在运行的进程列表并检查用户名,通过将用户名与SYSTEM,NETWORK等匹配来确定是否没有用户登录.我意识到我运行的PostgreSQL使用了一个名为的用户帐户postgres所以不行.检查explorer.exe是否正在运行也不起作用,因为explorer sometmes崩溃,或者我有时自己结束该进程并重新启动它.
确定NO用户使用C#登录到工作站的好方法是什么?
人们可以建议的一个解决方案是定期寻找一个特殊的"屏幕保护程序"桌面,如果它存在,那么将其计为运行的屏幕保护程序.
但显然所有屏幕保护程序都不是这种情况,因为一些提到的桌面总是存在.
有更可靠的解决方案吗?