Windows 7 中的用户交互服务
Posted
技术标签:
【中文标题】Windows 7 中的用户交互服务【英文标题】:User Interactive Service in Windows 7 【发布时间】:2013-07-08 13:57:58 【问题描述】:我们开发了一个基于网络的 C++ 应用程序,它应该作为 Windows XP 7 32 位系统的服务运行。
该应用程序基于控制台。 应用启动并运行后,用户应该能够在控制台中看到日志。为了让应用程序作为服务运行,我们使用了XYNTService
应用程序作为服务运行,在 XP 下运行良好。
但是我在 Windows 7 下看不到控制台,由于该服务在本地 SERVICE 帐户下运行,可能我们看不到 GUI 或以任何方式访问它,因为它正在另一个 winlogon 会话中运行。
那么有人可以建议我们如何使服务交互,以便用户可以在应用程序作为服务运行时在控制台上看到日志?
其他 如果我把它做成一个基于托盘的应用程序,有没有办法将日志重定向到一个窗口?
【问题讨论】:
我不会走这条路,因为在 Vista 及更高版本上,交互式服务很丑陋。他们的 UI 显示在一个完全独立的桌面(或 Window Station?我忘了)上,来回切换很麻烦。对应用程序进行适当的修改会更可取。 【参考方案1】:实际上,您可以订阅登录/注销事件,然后在每次用户登录系统时使用WTSEnumerateSessions 和CreateProcessAsUser 来创建GUI,但这不是一个好的选择。
制作一个在用户登录系统时自动运行的托盘应用程序是更好的主意,您可以使用任何 IPC 机制(命名管道、共享内存、套接字)将日志从服务发送到托盘应用程序。
【讨论】:
以上是关于Windows 7 中的用户交互服务的主要内容,如果未能解决你的问题,请参考以下文章
对于某些版本的 Windows,Windows 服务无法在用户使用 WTSQueryUserToken 登录时启动交互过程
iOS 7.0 UITableView backgroundView 中的控件禁用了用户交互
Windows服务(system权限)程序显示界面与用户交互,Session0通知Session1里弹出对话框(真的很牛) good