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

python2.7入门---文件I/O&简单用户交互

用户可以直接在 Microsoft Vista 上与服务交互吗?